核心数据错误: – :无法识别的select器发送到实例

我有一个自定义的类MyClass基本上由几个NSMutableArrays组成,没有其他variables。 我有一个实体MyEntity具有MyClass的伊娃。 当我尝试保存实体时,我得到这个堆栈转储:

0 CoreFoundation 0x0118ebe9 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x012e35c2 objc_exception_throw + 47 2 CoreFoundation 0x011906fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x01100366 ___forwarding___ + 966 4 CoreFoundation 0x010fff22 _CF_forwarding_prep_0 + 50 5 Foundation 0x00091bf6 _encodeObject + 1076 6 Foundation 0x0009d041 +[NSKeyedArchiver archivedDataWithRootObject:] + 206 7 CoreData 0x00eb7255 -[NSSQLiteConnection execute] + 2677 8 CoreData 0x00f0b646 -[NSSQLiteConnection insertRow:] + 262 9 CoreData 0x00f082d4 -[NSSQLConnection performAdapterOperations:] + 180 10 CoreData 0x00f07f7e -[NSSQLCore _performChangesWithAdapterOps:] + 494 11 CoreData 0x00f06a5a -[NSSQLCore performChanges] + 410 12 CoreData 0x00f004a8 -[NSSQLCore saveChanges:] + 216 13 CoreData 0x00ebe739 -[NSSQLCore executeRequest:withContext:error:] + 409 14 CoreData 0x00f6eb1b -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 3691 15 CoreData 0x00ef6db8 -[NSManagedObjectContext save:] + 712 16 MyProgram 0x00006d19 -[DataParser parser:didEndElement:namespaceURI:qualifiedName:] + 1665 17 Foundation 0x00104a19 _endElementNs + 453 18 libxml2.2.dylib 0x01620e63 xmlParseXMLDecl + 1346 19 libxml2.2.dylib 0x0162bb6d xmlParseChunk + 3984 20 Foundation 0x0010421a -[NSXMLParser parse] + 321 21 MyProgram 0x0000653e -[DataParser parseXMLFileAtURL:parseError:] + 176 22 MyProgram 0x00002912 -[MyProgramAppDelegate application:didFinishLaunchingWithOptions:] + 664 23 UIKit 0x002cc1fa -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163 24 UIKit 0x002ce55e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439 25 UIKit 0x002d8db2 -[UIApplication handleEvent:withNewEvent:] + 1533 26 UIKit 0x002d1202 -[UIApplication sendEvent:] + 71 27 UIKit 0x002d6732 _UIApplicationHandleEvent + 7576 28 GraphicsServices 0x01ac4a36 PurpleEventCallback + 1550 29 CoreFoundation 0x01170064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 30 CoreFoundation 0x010d06f7 __CFRunLoopDoSource1 + 215 31 CoreFoundation 0x010cd983 __CFRunLoopRun + 979 32 CoreFoundation 0x010cd240 CFRunLoopRunSpecific + 208 33 CoreFoundation 0x010cd161 CFRunLoopRunInMode + 97 34 UIKit 0x002cdfa8 -[UIApplication _run] + 636 35 UIKit 0x002da42e UIApplicationMain + 1160 36 MyProgram 0x000023e6 main + 84 37 MyProgram 0x00002389 start + 53 

有没有人有任何build议可能造成这一点? 我相信这可能与MyClass有关,但是我应该如何解决这个问题呢? 我忘了写点什么吗?

你是如何在你的实体中定义myClass ivar的? 您可以使用Transformable属性来保存非标准types。 这个想法是Core Data在幕后使用NSValueTransformer的一个实例来将属性转换为NSData的实例。

核心数据然后将数据实例存储到持久性存储。

默认情况下,使用NSKeyedUnarchiverFromDataTransformerName,这意味着您的自定义类必须实现NSCoding协议(支持密钥存档)

查看“核心数据编程指南”中的“非标准持久属性”,了解更多细节和完成相同的另一种方法的描述。