标签: nsmanagedobject

为什么可能会释放托管对象 - [_ PFManagedObjectReferenceQueue _queueForDealloc:]?

我偶尔会看到像这样的堆栈跟踪崩溃:

0 libobjc.A.dylib 0x97dc0edb objc_msgSend + 27
1 com.apple.CoreData 0x97edcdc2 -[_PFManagedObjectReferenceQueue _queueForDealloc:] + 162
2 com.apple.CoreData 0x97edccbe -[NSManagedObject release] + 94
3 com.apple.CoreFoundation 0x9318ef38 CFRelease + 152
4 com.apple.CoreFoundation 0x931a7460 __CFBasicHashStandardCallback + 384
5 com.apple.CoreFoundation 0x931a706e __CFBasicHashDrain + 478
6 com.apple.CoreFoundation 0x9318f101 _CFRelease + 353
7 com.apple.CoreFoundation 0x931bbc6d _CFAutoreleasePoolPop + 253
8 com.apple.Foundation 0x973270aa NSPopAutoreleasePool + 76
9 com.apple.Foundation 0x97326fd2 -[NSAutoreleasePool drain] + 130
10 com.apple.AppKit 0x95087185 -[NSApplication run] + 627
11 com.apple.AppKit 0x9507f2d9 NSApplicationMain + 574
12 com.karelia.Sandvox 0x70001ef6 …
Run Code Online (Sandbox Code Playgroud)

cocoa core-data nsmanagedobject

8
推荐指数
1
解决办法
2968
查看次数

保存后NSManagedObject更改了属性

是否可以找到保存后在托管对象上保存的属性?例如,我有人在监听托管对象上下文保存(NSManagedObjectContextDidSaveNotification),我想知道对象的哪些属性已保存.

core-data objective-c nsmanagedobject nsmanagedobjectcontext

8
推荐指数
2
解决办法
2612
查看次数

CoreData关系返回_NSCoreDataTaggedObjectID

我通过以下关系访问核心数据对象:

pArret.zzone?.libelle
Run Code Online (Sandbox Code Playgroud)

第一个对象与第二个对象具有To-one关系,并且libelle是第二个对象的属性.

我收到以下错误: -[_NSCoreDataTaggedObjectID libelle]: unrecognized selector sent to instance 0xd00000000e30000c.我不知道这个私有_NSCoreDataTaggedObjectID类是什么,为什么我没有NSManagedObject按预期获得我的子类?

core-data nsmanagedobject ios

8
推荐指数
1
解决办法
330
查看次数

NSUndoManager,核心数据和选择性撤消/重做

我正在研究一个核心数据应用程序,它具有相当大的托管对象层次结构,类似于树.

创建基础对象时,它会创建一些子对象,这些子对象又创建自己的子对象,依此类推.这些子对象中的每一个都可以使用NSURLConnections收集信息.

现在,我想在managedObjectContext中使用undoManager支持undo/redo.问题是,如果用户创建基础对象,然后尝试撤消该操作,则不会删除基础对象.相反,可以移除一个或多个子对象.显然,这种行为是不可预测的,也是不受欢迎的.

所以我尝试默认禁用撤消注册.我通过disableUndoRegistration:在managedObjectContext中修改任何内容之前调用来完成此操作.然后,在基本操作(例如创建基础对象)之前启用撤销注册,再次重新禁用后续注册.

现在,当我尝试撤消时,我收到此错误:

undo:NSUndoManager 0x1026428b0处于无效状态,使用过多的嵌套撤销组调用undo

思考?

cocoa core-data nsundomanager nsmanagedobject nsmanagedobjectcontext

7
推荐指数
2
解决办法
3187
查看次数

iphone NSManagedObject - 解除分配的正确方法?

我有一个NSManagedObject的子类,大多数属性是动态的(由托管对象创建),但我有一些辅助属性,它们被创建为@synthesize.

释放这些物体的正确方法是什么?

- (void)didTurnIntoFault
{
     [self.randomVar release];
     [super didTurnIntoFault];
}
Run Code Online (Sandbox Code Playgroud)

要么

- (void)dealloc
{
     [self.randomVar release];
     [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch core-data objective-c nsmanagedobject ios

7
推荐指数
2
解决办法
2654
查看次数

扩展NSManagedObject的删除方法

我正在使用CoreData,并想知道我是否可以以某种方式扩展我的NSManagedObjects来做自定义的东西(比如删除属于这个实例的文件).

在我的例子中,我有几个CoreData实体,每个实体可能有一个存储在属性中的文件夹或文件路径.如果实体被删除,我希望这个实体负责自己删除引用的文件.

与"级联"删除规则结合使用时,此类行为特别有用,因为删除实体会删除所有子实体及其文件.

如果没有这样的机制,我会为包含自定义删除方法的每个实体编写一个类别,包括可能有子节点的实体的级联行为.

你会做什么,我的问题有一个优雅的解决方案吗?之前已经讨论过了,我还没有找到它吗?

非常感谢!

保罗

core-data objective-c nsmanagedobject

7
推荐指数
1
解决办法
812
查看次数

与NSManagedObject版本崩溃:"objc_msgSend()选择器名称:_queueForDealloc"

很多用户通过HockeyApp报告了一个奇怪的崩溃,其中包含以下堆栈跟踪.它似乎与NSManagedObject在不同的调度队列中发布有关...但我没有得到问题可能出现的任何符号.这似乎是一个内存管理问题,但我正在使用ARC,因此不确定如何过度释放NSManagedObject.

这是我得到的崩溃报告(主线程在不同时间显示不同的跟踪):

Code Type:       ARM-64
Parent Process:  launchd [1]

Date/Time:       2014-05-12T05:43:54Z
OS Version:      iPhone OS 7.0.6 (11B651)
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x1c3dbeb8
Crashed Thread:  2

Application Specific Information:
objc_msgSend() selector name: _queueForDealloc:

Thread 0:
0   CoreFoundation                       0x000000018e384618 CFNumberGetType + 0
1   CoreFoundation                       0x000000018e3333b8 _CFAppendXML0 + 2768
2   CoreFoundation                       0x000000018e333304 _CFAppendXML0 + 2588
3   CoreFoundation                       0x000000018e332268 _CFPropertyListCreateXMLData + 196
4   Foundation                           0x000000018ef152f4 -[NSDictionary(NSDictionary) writeToFile:atomically:] + 232
5   SimpleList                           0x00000001001ae48c __55-[SharedSettingController writeToContactsReferenceFile]_block_invoke (SharedSettingController.m:620)
6   libdispatch.dylib                    0x000000019a974420 …
Run Code Online (Sandbox Code Playgroud)

multithreading core-data objective-c nsmanagedobject ios

7
推荐指数
1
解决办法
2957
查看次数

从Core Data Managed Object Context中删除已插入但未保存的对象

有没有办法删除已插入上下文但尚未保存的单个托管对象?我想删除单个对象,而不是回滚整个上下文.我已经尝试过调用deleteObject:但它会引发异常,因为根据核心数据,该对象在MOC中尚不存在.通过查看核心数据的插入对象属性,我肯定知道它已被插入,并且通过查看已删除的对象,我知道它已被标记为删除.基本上我想"取消插入"对象.先保存然后删除是不可接受的.谢谢.

macos core-data nsmanagedobject nsmanagedobjectcontext ios

7
推荐指数
1
解决办法
2307
查看次数

删除*unsaved*Core Data对象时如何处理外部数据的清理?

在托管对象中,我已经存储了应用程序容器中图像文件的路径.
删除托管对象后,应将图像文件移至废纸篓.这应该尽可能晚地完成,以便我可以尽可能长时间地提供撤消功能.

我正在按照这个问题的答案:如何在删除Core Data对象时处理外部数据的清理,并在我的托管对象子类中重写-didSave以废弃文件.

事实证明,这仅适用于:

  • 已添加托管对象,
  • 托管对象上下文已保存,
  • 托管对象已被删除,
  • 托管对象上下文已保存.

但是,在以下情况中,未在托管对象中调用-isSaved:

  • 已添加托管对象,
  • 托管对象已被删除,
  • 托管对象上下文已保存.

我理解为什么会这样.由于删除的对象从未在第一个地方持久存在,因此在删除后不会保存它,也不会调用-didSave.

现在我正在寻找另一个将引用文件移动到垃圾箱的地方.那可能在哪里?

cocoa core-data nsmanagedobject nsmanagedobjectcontext

7
推荐指数
1
解决办法
1142
查看次数

对于NSManagedObject,Xcode 9构建了Date vs NSDate的问题

Xcode 9为Date模拟器与设备中的实体的类型属性生成不同的代码.我在coredata中设置了codegen功能.Classcategory/extension

直到Xcode 8.3(最新)它一切正常(NSDate总是).下面是Xcode 9(Swift 4)为属性自动生成的代码 -

在设备上: -

@NSManaged public var requiredDate: Date?
Run Code Online (Sandbox Code Playgroud)

和,

在模拟器上: -

@NSManaged public var requiredDate: NSDate?
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有谁遇到过这个问题?对于一个有50多个成员的项目来解决这个问题的最佳解决方案是什么,直到Xcode更新修复它(我希望有一个苹果雷达)?

xcode date core-data nsmanagedobject codegen

7
推荐指数
1
解决办法
638
查看次数