3

次のデータ構造があります。

- Cards
 -- Item 0
  --- Name: Card Name
  --- Number: Card Number
  --- Type: Card Type
 -- Item 1
  --- Name: Card Name
  --- Number: Card Number
  --- Type: Card Type
...

ユーザーは好きなだけカードを追加できるため、名前、番号、およびタイプはユーザーが定義します。

最初の質問は、このデータを NSUserDefauls (このようにネスト) に書き込む方法です。

2 番目の質問は、このデータを取得して各カードの名前をテーブル ビューに表示するにはどうすればよいかということです。(私はすでにテーブルビューを設定して動作させているので、NSUserDefaultsからデータを取得するだけです)。

どんなコード例でも大歓迎です。

ありがとう

4

2 に答える 2

9

この構造を作成するのは非常に簡単です。キー「Cards」の配列値を持つ辞書を作成します。以下の例..

NSMutableDictionary *cards = [NSMutableDictionary dictionary];
NSMutableArray *cardArray = [NSMutableArray array];

NSMutableDictionary *item = [NSMutableDictionary dictionary];
[item setValue:@"Card Name" forKey:@"Name"];
[item setValue:@"Card Number" forKey:@"Number"];
[item setValue:@"Card Type" forKey:@"Type"];

[cardArray addObject:item];
[cards setValue:cardArray forKey:@"Cards"];

[[NSUserDefaults standardUserDefaults] setValue:cards forKey:@"user_cards"];
[[NSUserDefaults standardUserDefaults] synchronize];

カードを取得するには、次のようにします..self.cards が NSMutableArray ivar であると仮定します..

NSMutableDictionary *stored = [[NSUserDefaults standardUserDefaults] valueForKey:@"user_cards"];

self.cards = [stored valueForKey:@"Cards"];

以下のように、テーブルビューは ivar を使用cardsしてデータを入力する必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    ...... 

    //Now we populate each row of the cell with each `card` Name.
  cell.textLabel.text = [[self.cards objectAtIndex:[indexPath row]] valueForKey:@"Name"];

   .....
}

保存された辞書に新しく追加されたカードを再保存するには、次のようにします..

NSMutableDictionary *newCard = [NSMutableDictionary dictionary];
[newCard setValue:@"Card Name" forKey:@"Name"];
[newCard setValue:@"Card Number" forKey:@"Number"];
[newCard setValue:@"Card Type" forKey:@"Type"];

[self.cards addObject:newCard];

[[NSUserDefaults standardUserDefaults] valueForKey:@"user_cards"] setValue:self.cards forKey:@"Cards"];
[[NSUserDefaults standardUserDefaults] synchronize];

これがあなたの質問に役立った場合は、回答として受け入れてください。

于 2012-05-28T17:47:20.367 に答える
0

保存

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSArray
[prefs setObject:myArray forKey:@"keyToLookupArray"];

[prefs synchronize];    

取得中

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSArray
NSArray *myArray= [prefs stringForKey:@"keyToLookupArray"];
于 2012-05-28T17:46:15.383 に答える