0

1 つの配列を持つ .plist があり、この配列には NSDictionary が含まれています。ここで、辞書でいくつかの値を変更したいと考えています。私のアイデアは、配列全体をロードし、値を見つけて変更し、配列全体を上書きすることです。しかし、それには多くの時間がかかりました。特別な値を変更するより良い方法を知っていますか?

4

3 に答える 3

2

ここには時間の問題はありません。big-O 記法について話しましょう:

  1. 配列から NSDictionary をフェッチする最悪の場合のコスト: O(log(n)) -ソース
  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 に答える