2011-11-04 41 views
1

对于这个项目,我可以采用这种方式,但是我很好奇,如果使用plist来存储一些数据会比仅在文档文件夹中保存plist效率更高或更低。数据大约是50个字符串/字典。是plist还是NSUserDefaults更有效地存储少量数据?

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

但是,plist似乎有点多一点工作。

回答

6

NSUserDefaults plist(这就是为什么只有plist类型可以存储在其中)。所以最终效率不会有太大的差别(无论你是什么意思)。您的考虑应该是合适的来保存这些数据。苹果说,除非它适合存储在iCloud中,否则不要将其保存在Document文件夹中;它会在用户备份设备时备份,并且会从用户的配额中减去,因此您需要保留在那里保留的内容。

在我自己的一个应用程序中,我从RSS源下载一堆数据并将其呈现给用户,我将数据存储在用户默认值中,因为它是下一次应用程序持久状态的一部分它出现。我的数据不是文件;这是应用程序的状态。这是我的推理,并且我建议你可以沿着类似的路线推理......

+0

我存储的数据甚至比您的RSS提要示例少。所以这听起来像NSUserDefaults可能是一个更容易的电话。通过“高效”,我正在考虑返回数据的速度,以及目前不需要的数据占用的内存。 – Walter

+0

如果您希望通过iCloud将您的RSS提要数据与其他设备同步,该怎么办?是否有任何区别,或者你仍然会去NSUserDefaults? – Anth0

1

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

0

你可能要考虑JSON使用JSONKit。有些测试显示它是faster than a binary plist,如果速度是您最关心的问题。 API非常简单,因为它在NSDictionaryNSArray上创建了一个类别。在这些对象上调用-(NSData *)JSONData将返回一个NSData对象,以准备保存。

相关问题