0

我有一个带有一个数组的 .plist,在这个数组中我有一些 NSDictionary。现在我想在我的字典中更改一些值。我的想法是加载整个数组,找到值,更改它,然后覆盖整个数组。但这花费了很多时间。您知道更改特殊值的更好方法吗?

4

3 回答 3

2

这里没有时间问题。让我们谈谈大 O 表示法:

  1. 从数组中获取 NSDictionary 的最坏情况成本:O(log(n)) - source
  2. 从字典中获取值的最坏情况成本:O(log(n))(参见上面的源代码)
  3. 在字典O(c)中对该值执行任何恒定数量的操作的成本

O(log(n))+O(log(n))+O(c)= O(log(n))

所以你被“卡住”了 O(log(n)) 这一点也不坏。

于 2013-01-31T15:13:20.763 回答
1

如果您要使用 .plist 持久化数据,那么如果您进行更改,除了写出整个文件之外别无选择。

存储允许您更新单个记录的大量数据的另一种方法是使用 CoreData - 它实际上是存储在设备上的数据库。

Core Data 比使用 plist 复杂得多,但更具可扩展性,以及使用数据库带来的所有其他好处。

于 2013-01-31T15:13:10.707 回答
-1

plist 有多大?你多久做一次?应该不是性能问题。。

于 2013-01-31T15:06:17.440 回答