0

最近投稿したフォーラムからこれらの投稿をコピーしましたが、返信がありませんでした。

コードのすべてのセットアップのベースがあります。これは、意図的に空の値を持つ plist から nsmutabledictionary にデータをロードするナビゲーションコントローラーを備えたドリルダウンテーブルです。コマンドを実行すると、アプリは情報をダウンロードし、その情報が setValue として NSMutableArray に設定されます。問題は、この NSMutableArray が plist のルートから 3 レベル下にあることです。appdelegate にロードおよび保存される plist の配列を置き換える方法を探しています。どうすればいいですか?助けていただければ幸いです。

だからあまり意味がなかったのかもしれません。AppDelegate では、plist ファイルを NSMutableDictionary にロードします。plist は次のようになります。

ルート
>タイトル(文字列)
>行(配列)
>>アイテム1(辞書)
>>>タイトル(文字列)
>>>ID(文字列)
>>>アイテムリスト(配列)
>>>>アイテム1(辞書)
>> >>>タイトル(文字列)
>>>>>ID(文字列)
>>>>>値(文字列)-----------ダウンロードした空の値
>>>>項目2(辞書)
>>>>項目 3(辞書)
>>>>項目 4(辞書)
>>項目 2(配列)
>>項目 3(配列)
>>項目 4(配列)

Rows 配列は RootViewController に送信されます。これらの項目の 1 つが TableView から選択され、その選択された項目の ItemList に設定されたテーブル データ ソースを使用して新しいインスタンスが作成される場合。ユーザーがボタンを押すと、値がダウンロードされ、[setValue: forKey:@"Value"] を使用して値が配列に設定されます。ここで迷子になります。この ItemList 配列をメインのルート ディクショナリに戻してから、そのルート ディクショナリを AppDelegate に送り返す必要があります。これにより、applicationWillTerminate で [self.data writeToFile:] を呼び出すことができ、ダウンロードした情報をダウンロードする必要がなくなります。次の時間。

4

2 に答える 2

0

forKeyPath を使用する必要があるかもしれないと思います

于 2009-07-30T11:59:03.967 に答える
0

あなたの問題が何であるかを理解しているかどうかは完全にはわかりません。配列に新しい値を入力したら、ディクショナリで setObject:forKey: を使用して古い配列を置き換えるだけです。

アプリ デリゲートへの参照を取得できない場合は、[[UIApplication sharedApplication] delegate] を使用できます。

問題が辞書と配列がネストされているため、値を設定するために複数のオブジェクトを変更する必要がある場合は、mutableCopy を使用して、ロード時に plist から変更可能な配列と辞書を生成することを検討してください。または、plist 形式を読み書きするのではなく、洗練されたデータ表現を使用することを検討してください。

于 2009-07-29T13:24:24.640 に答える