0

私は辞書に格納された2つの配列を持っています:

array1=[[NSArray alloc]initWithObjects:a,b,c,d,e, nil];
array2=[[NSArray alloc]initWithObjects:1,2,3, nil];
 NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:array2];

実行すると、次のようなエラーが発生します。

-[NSDictionary initWithObjects:forKeys:]: count of objects (0) differs from count of keys (1)'

今、私はキーを持つ a、b、c の辞書のみを設定したい: 1,2,3.

配列は編集できませんでした

どうやってやるの

4

5 に答える 5

2

nil 値にキーを追加しても意味がありません。

NSRange range = NSMakeRange(0, MIN(array1.count, array2.count));
NSDictionary * dic=[[NSDictionary alloc]initWithObjects:[array1 subarrayWithRange:range]
                                                forKeys:[array2 subarrayWithRange:range]];
于 2013-01-29T11:16:52.743 に答える
1

使用 :

array1=[[NSArray alloc]initWithObjects:a,b,c,d,e, nil];
array2=[[NSArray alloc]initWithObjects:1,2,3, nil];
// NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:array2];

NSMutableDictionary * dic=[NSMutableDictionary new];
for(int i=0 ; i< array2.count ; i++ ){
   [dic setObject:array1[i] forKey:array2[i]];
}
于 2013-01-29T11:17:02.273 に答える
0

NSMutableArrayを使用して最初の配列を操作し、そこからd&eを削除します

于 2013-01-29T11:10:53.233 に答える
0

ドキュメントから:

キーも値も nil にすることはできません。辞書で null 値を表す必要がある場合は、NSNull を使用する必要があります。

于 2013-01-29T11:18:46.350 に答える
0

配列全体の 1 つのキーは簡単に設定できます。

NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:@"Array"];

配列内の各オブジェクトにキーを追加する場合は、次のようになります。

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
int key = 1;
for (NSString *str in array1) {
    [dict setObject:str forKey:[NSString stringWithFormat:@"%d",key]];
    key++;
}

お役に立てれば!!!

于 2013-01-29T11:11:53.830 に答える