【发布时间】:2014-10-11 00:29:42
【问题描述】:
我在使用 Core Data 时遇到了这个问题。
CoreData: error: exception during fetchRowForObjectID: -[PharmaceuticalComp initWithCoder:]: unrecognized selector sent to instance 0x9ab1920 with userInfo of (null)
2014-08-18 07:56:55.784 HorizonMemory[1357:60b] CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[PharmaceuticalComp initWithCoder:]: unrecognized selector sent to instance 0x9ab1920 with userInfo (null)
2014-08-18 07:56:55.786 HorizonMemory[1357:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PharmaceuticalComp initWithCoder:]: unrecognized selector sent to instance 0x9ab1920'
*** First throw call stack:
(
0 CoreFoundation 0x021981e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x01f178e5 objc_exception_throw + 44
2 CoreFoundation 0x02235243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3 CoreFoundation 0x0218850b ___forwarding___ + 1019
4 CoreFoundation 0x021880ee _CF_forwarding_prep_0 + 14
5 Foundation 0x01b2a01a _decodeObjectBinary + 3498
6 Foundation 0x01b2b4d7 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 2204
7 Foundation 0x01b2b746 -[NSArray(NSArray) initWithCoder:] + 255
8 Foundation 0x01b2a01a _decodeObjectBinary + 3498
9 Foundation 0x01b2b4d7 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 2204
10 Foundation 0x01b37ff1 -[NSDictionary(NSDictionary) initWithCoder:] + 261
11 Foundation 0x01b2a01a _decodeObjectBinary + 3498
12 Foundation 0x01b29106 _decodeObject + 340
13 Foundation 0x01b28faa -[NSKeyedUnarchiver decodeObjectForKey:] + 181
14 Foundation 0x01b9aa86 +[NSKeyedUnarchiver unarchiveObjectWithData:] + 106
15 Foundation 0x01b197d5 -[_NSKeyedUnarchiveFromDataTransformer transformedValue:] + 47
16 CoreData 0x024205b9 _prepareResultsFromResultSet + 4105
17 CoreData 0x0241de33 newFetchedRowsForFetchPlan_MT + 1
PharmaComp 是一个 NSManaged 子类,通过瞬态属性 -linkedPharma 链接到另一个实体 User。用户在只读模式下拥有此属性。每次我调用linkedPharma 时,它都会启动一个为我提供PharmaComp 实例的获取请求。当我尝试删除用户时,我得到了这个异常。奇怪的事实是,linkedPharma 是模型中未列出的属性,因此 PharmaComp 不应参与任何类型的操作。另一个事实是它似乎试图在其上使用 NSKeyedUnarchivier,但我不明白为什么.
没有对象听到NSManagedObjectContextObjectsDidChangeNotification。
我不知道它是从哪里来的。
【问题讨论】:
-
为什么是瞬态属性?直截了当的关系不是更适合您的用例吗?
-
嗨@Mundi 我从项目一开始就是这样,我想这是因为数据驻留在两种不同的配置中,一种是只读的,一种是r/w。我认为我发现错误用户具有包含 Pharmacomp 的可转换属性。这可能是它尝试使用 initWithcoder 的原因。
标签: ios objective-c core-data