Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用自定义对象数组而不是字典重现writeToURL/initWithContentsOfURL行为_Objective C_Cocoa_Nsarray_Nsdictionary - Fatal编程技术网

Objective c 使用自定义对象数组而不是字典重现writeToURL/initWithContentsOfURL行为

Objective c 使用自定义对象数组而不是字典重现writeToURL/initWithContentsOfURL行为,objective-c,cocoa,nsarray,nsdictionary,Objective C,Cocoa,Nsarray,Nsdictionary,我将NSMutableDictionary对象数组替换为自定义对象数组。每个都有15个左右的实例变量需要持久化,还有几个是暂时的 我过去常常使用-initWithContentsOfURL:和-writeToURL:来读写这些内容 使用新数据结构生成相同plist文件的最佳方法是什么 保存的一种方法似乎是重新创建一个等效字典数组,并调用-writeToURL:,反之亦然以进行加载。我想知道是有一种简单的方法,还是一种更简单更直接的方法。您可以在类中实现该协议,将类的实例归档到磁盘上。我经常发现,

我将NSMutableDictionary对象数组替换为自定义对象数组。每个都有15个左右的实例变量需要持久化,还有几个是暂时的

我过去常常使用
-initWithContentsOfURL:
-writeToURL:
来读写这些内容

使用新数据结构生成相同plist文件的最佳方法是什么


保存的一种方法似乎是重新创建一个等效字典数组,并调用
-writeToURL:
,反之亦然以进行加载。我想知道是有一种简单的方法,还是一种更简单更直接的方法。

您可以在类中实现该协议,将类的实例归档到磁盘上。

我经常发现,最方便的方法是从自定义对象树创建一个NSMutableDictionary树并归档它。很明显,这会带来内存和CPU开销,严格来说并不像skidr0w建议的那样实现NSCoding,但正如我所说的,它有时更快更容易。

虽然不美观,但确实又快又容易。@noa使用NSCoding协议实现对象序列化有一个新的方法