在iOS中存储自定义对象(不实现NSCoding)的方法

时间:2017-05-18 12:47:00

标签: ios swift

我想在NSUserDefaults中存储一些自定义对象。我知道,它应该实现NSCoding协议。但问题在于,我无法更改该类,因为它是由某些SDK提供的。

那么有没有办法存储这些自定义对象?

1 个答案:

答案 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;软件设计模式(或包装)。