我想在NSUserDefaults中存储一些自定义对象。我知道,它应该实现NSCoding协议。但问题在于,我无法更改该类,因为它是由某些SDK提供的。
那么有没有办法存储这些自定义对象?
答案 0 :(得分:0)
您可以创建自己的自定义类,其中包含原始类的所有字段。然后你可以免费获得大部分(如果不是全部)编码。 最终结果与为原始对象实现NSCoding非常相似,因为所有更改都限于"编码"和"解码" (保存/恢复)功能。您项目中的其他任何内容都不得更改。
修改强>:
您可以创建两个特殊存档功能
func saveToArchive(customObject: CustomObject) -> Bool {
<your code; return true if succeeded>
}
func loadFromArchive(identifier: Int) -> CustomObject? {
let newObject = CustomObject
< again your code to retrieve the correct object (your version);
assign each field to newObject and return it, return nil you have an issue>
}
通过遵循这种方法,您基本上从不使用您的对象版本,除了转换到/来自持久存储(数据库,存档等)类似于&#34;适配器&#34;软件设计模式(或包装)。