我在尝试保存数据时遇到了一些麻烦。我至少知道,如果我有一个简单的类与原始类型,那么我只需要NSCoding(编码器和解码器)。但是我有一个主类,它有2个同一类的其他对象,我不太确定如何坚持它。
主类的例子:
class MainClass {
var name: String
var description: String
var objectA: CustomClass
var objectB: CustomClass
...
}
我是否必须实现与主类相同的编码?让它可序列化?我怎么去保存呢?
答案 0 :(得分:0)
您需要在包含的类中实现NSCoding
,然后才能执行此操作
class MainClass {
var name: String
var description: String
var objectA: CustomClass
var objectB: CustomClass
required init?(coder decoder: NSCoder)
{
super.init()
if let decodedObjectA = decoder.decodeObject(forKey: "objectA") as? CustomClass{
self.objectA = decodedObjectA
}
if let decodedObjectB = decoder.decodeObject(forKey: "objectB") as? CustomClass{
self.objectB = decodedObjectB
}
}
}
//MARK: NSCoding
extension MainClass : NSCoding
{
func encode(with aCoder: NSCoder) {
aCoder.encode(self.objectA, forKey: "objectA")
aCoder.encode(self.objectB, forKey: "objectB")
}
}
我希望这有助于你