【发布时间】:2016-10-26 21:24:16
【问题描述】:
这个结构在 swift 2 中工作
我有一个这样的 Swift 3 结构。
let tempContacts = NSMutableArray()
let arrayOfArray = NSMutableArray()
我在这个 for 循环中编码了 Person 对象
for person in tempContacts as! [Person] {
let encodedObject: Data = NSKeyedArchiver.archivedData(withRootObject: person) as Data
arrayOfArray.add(encodedObject)
}
我已经解码了这个for循环中的数据
let tempContacts2 = NSMutableArray()
for data in arrayOfArray {
let person: Person = NSKeyedUnarchiver.unarchiveObject(with: data as! Data) as! Person
tempContacts2.add(person)
}
但 unarchiveObject 总是返回 nil 值
【问题讨论】:
-
您的
Person对象是否符合NSCoding协议? -
是的,我在我的 Person 类中使用了 NScoding 协议
-
你为什么在 Swift 中使用一个完全不相关的类型,比如
NSMutableArray,而不是一个 SwiftArray,在解码部分使用实际类型为[Person]?您正在丢弃作为 Swift 基本语义之一的类型信息。