在Swift中编码对象

时间:2014-07-05 18:34:44

标签: ios swift

我不确定这是一个早期的快速错误,还是我做错了什么。我有我想要保存在用户默认值上的自定义类对象。为此,我需要编码自定义对象的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'

任何人有同样的问题或知道如何绕过这个问题?

1 个答案:

答案 0 :(得分:1)

NSKeyedArchiver正在对您的对象调用encodeWithCoder:,这显然没有实现它。

基本上,您需要告诉归档程序如何对对象进行编码。在Cocoa中完成此操作的方法是让您的类实现NSCoding协议,该协议定义了两种方法:

  • encodeWithCoder:
  • initWithCoder:

检查How to use NSCoder以获取有关如何符合的更多信息。这是一个Objective-C问题,但转换为swift应该是直截了当的。