【问题标题】:Encode Object in Swift在 Swift 中编码对象
【发布时间】:2014-07-05 18:34:43
【问题描述】:

我不确定这是早期的 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'

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

【问题讨论】:

标签: ios swift


【解决方案1】:

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

基本上,您需要告诉归档器如何对您的对象进行编码。在 Cocoa 中这样做的方式是让您的类实现 NSCoding 协议,该协议定义了两种方法:

  • encodeWithCoder:
  • initWithCoder:

查看How to use NSCoder 了解有关如何符合要求的更多信息。这是一个 Objective-C 问题,但转换为 swift 应该很简单。

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多