我不确定这是一个早期的快速错误,还是我做错了什么。我有我想要保存在用户默认值上的自定义类对象。为此,我需要编码自定义对象的NSData
:
var myEncodedObject:NSData = NSKeyedArchiver.archivedDataWithRootObject(myObject)
问题是我收到了错误,我认为这可能是一个错误。
2014-07-05 15:25:35.317 myAppName[12323:1008333] -[_myAppName encodeWithCoder:]: unrecognized selector sent to instance 0x1190c7f0
2014-07-05 15:25:35.323 myAppName[12323:1008333] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_myAppName encodeWithCoder:]: unrecognized selector sent to instance 0x1190c7f0'
任何人有同样的问题或知道如何绕过这个问题?
答案 0 :(得分:1)
NSKeyedArchiver
正在对您的对象调用encodeWithCoder:
,这显然没有实现它。
基本上,您需要告诉归档程序如何对对象进行编码。在Cocoa中完成此操作的方法是让您的类实现NSCoding
协议,该协议定义了两种方法:
encodeWithCoder:
initWithCoder:
检查How to use NSCoder以获取有关如何符合的更多信息。这是一个Objective-C问题,但转换为swift应该是直截了当的。