0

ユーザーが検索語を入力し、Web サービスから結果を受け取るアプリを開発しています (Web サービスを制御しています)。結果は uitable ビューに表示され、ユーザーは行を選択して 3 ~ 4 レベルの内部詳細に移動できます (私は uinavigation コントロールを使用しています)。

ビュー間でデータを永続化する最良の方法は何だろうと思っています。

現在、アプリケーション デリゲートを使用して、アプリのどこからでもアクセスできるオブジェクトの配列を格納しています。正常に動作しますが、仕事には良い習慣ではないことを読みました(メモリの問題が心配です)。仕事にCore Dataフレームワークを使用しようとしましたが、Webサービスの結果を読み取って、データベースに挿入するために1つずつループする必要があることに気付きました。保存しているデータは現在の検索でのみ実際のものであるため、古いデータも削除する必要があります。p-list とファイル システムへのデータの保存について読みましたが、自分の仕事に本当に適した解決策を見つけることができませんでした...どんな助けも大歓迎です!!! ありがとう!!!

4

1 に答える 1

0

通信にはJSONまたはPLIStを使用できますが、Appleによると、電話側ではバイナリplistの方がはるかに高速です。

バイナリ Plist から辞書を作成するのは比較的簡単です。

NSPropertyListFormat format;
NSDictionary *myDictionary = [NSPropertyListSerialization 
        propertyListFromData:data mutabilityOption:NSPropertyListMutableContainers
        format:&format errorDescription:&errorString];

JSON から作成するには、すぐに利用できる JSON ライブラリのいずれかを使用する必要があります。辞書を取得したら、保存します。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES); 
NSString *file = [NSString stringWithFormat: @"%@%@.plist", [paths objectAtIndex:0], @"MyPlistBaseName"];    

[plist writeToFile: file atomically:NO];

後で再ロードします。

NSDictionary *plist = [[[NSDictionary alloc] initWithContentsOfFile: file] autorelease];

ただし、このデータへのアクセスをシングルトンにカプセル化すると、速度/メモリが問題になる場合に実装の最適化について心配することができます。countgetGroup(0)(25 のブロックを返す) などのメソッドを使用して、そのサインルトンをデータの「所有者」として扱うだけです。その後、オブジェクト内のすべての実装の詳細を非表示にすることができます。

于 2011-08-21T21:01:18.217 に答える