【问题标题】:Core data exception: initWithCoder:]: unrecognized selector sent核心数据异常:initWithCoder:]: unrecognized selector sent
【发布时间】: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


【解决方案1】:

解决方案非常简单。
用户还与持有(针对错误)PharmaComp 实例的可转换容器 (NSArray) 有另一种关系。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2011-10-02
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多