2

2 つの NSDictionaries を取得して 1 つの NSMutableArray を作成することは可能ですか? だから私はこの状況を持っているとしましょう:

dict1 = キー/値: id/名

dict2 = キー/値: id/lastname

(これらは、データベース クエリからサーバーに入力されます)

ここで、辞書を「ユーザー」オブジェクトの NSMutableArray に結合したいと考えています。ユーザー オブジェクトにはこれらの変数があり、上記の 2 つの NSDict オブジェクトにマッピングされます。つまり: id、名、姓 (すべてが NSString です)

いろいろやってみました。

問題は次のとおりです。NSDictionary キー/値を抽出し (NSEnumerator を使用しますが、より遅い for ループでも試しました)、結果のオブジェクトを mutablearray に追加すると、配列内のオブジェクトの値が同じオブジェクトに初期化されます。先行するすべての値に対して。例:

id:1 - ファーストネーム: ジョン - ラストネーム: ブラウン
id:2 - ファーストネーム: マイク - ラストネーム: ブルー
id:3 - ファーストネーム: メアリー - ラストネーム: ホワイト

列挙が完了し、ループの最後に到達するまでに、配列は次のようになります (すべてのオブジェクトは同一です)。

id:3 - 名: メアリー - 姓: ホワイト
id:3 - 名: メアリー - 姓: ホワイト
id:3 - 名: メアリー - 姓: ホワイト

何かアドバイス?

4

1 に答える 1

4

あなたの問題が何であるかわからない場合、コードスニペットが役立つかもしれませんが、私がそれを行う方法は次のとおりです。

for (NSString *key in [dict1 allKeys]) {
  User *u = [[User alloc] initWithId:key
                           firstName:[dict1 objectForKey:key]
                            lastName:[dict2 objectForKey:key]];
  [users addObject:u];
  [u release];
}

NSEnumerator順序が保証されていないため、オブジェクト自体には使用しません。

それがすでにあなたが行っていることである場合は、User initメソッドで何かおかしなことを調べる必要があるかもしれません。実際、同じオブジェクトを何度も使用していますか?

于 2009-08-03T03:56:36.460 に答える