是一个plist或NSUserDefaults更有效的存储less量的数据?

对于这个项目,我可以用任何一种方法,但是我很好奇,如果使用plist来存储一些数据比在文档文件夹中保留一个plist效率更高或者更低。 数据大约是50个string/字典。

在这两种情况下,数据都会使用某个文件IO持久保存,因此磁盘访问应该类似。

然而,plist似乎有点多一点工作。

NSUserDefaults 一个plist(这就是为什么只有plisttypes可以存储在其中)。 所以最终效率不会有太大的差别(不pipe你是什么意思)。 你的考虑应该是在适当的地方保存这些数据。 苹果说,除非它适合在iCloud中存储,否则不要将其保存在“文档”文件夹中。 它会在用户备份设备时备份,并且会从用户配额中减去,所以您需要保留在那里。

在我自己的一个应用程序中,我从一个RSS提要下载一堆数据并呈现给用户,我将这些数据存储在用户默认值中,因为它是下一次显示时应用程序持久状态的一部分。 我的资料不是文件; 这是应用程序的状态。 这是我的推理,我build议你可能会采取类似的理由。

在我看来,plist比NSuserDefaults更简单。 毕竟,字典可以保存为一个plist。 至于效率,它们应该与NSUserDefaults将所有东西都存储为plist相同,但是提供更多的服务,例如比较与提供的一组键/值缺省对相比哪些键/值对已经改变。

你可能要考虑使用JSONKit的 JSON。 一些testing表明,如果速度是您最关心的问题,那么速度会比二进制plist快。 这个API很简单,因为它在NSDictionaryNSArray上创build了一个类别。 调用-(NSData *)JSONData这些对象的-(NSData *)JSONData返回一个NSData对象准备保存。