理解できない状況で悩んでいます。
ここに私のコードがあります:
for (CDDetailDpt* detailDpt in [((CDGlobalInfo*)object).details allObjects]) {
NSMutableArray *array = [NSMutableArray array];
[array addObject:detailDpt.numDept];
NSLog(@"Department Number = %@", detailDpt.numDept);
NSLog(@"Color Number = %@", detailDpt.color);
switch ([detailDpt.color intValue]) {
case 2:
[_deptDict setValue:array forKey:detailDpt.color];
break;
case 3:
[_deptDict setValue:array forKey:detailDpt.color];
break;
case 4:
[_deptDict setValue:array forKey:detailDpt.color];
break;
default:
[_deptDict setValue:array forKey:detailDpt.color];
break;
}
}
for (id key in _deptDict)
NSLog(@"dept Dict = %@", [_deptDict objectForKey:key]);
説明しましょう:
CoreData オブジェクトをスローしてループしています。より正確には、国の各部門の情報のリストがあります。この詳細オブジェクトには、departmentNumber、departmentName、および colorNumber (地図上に表示するために 1 から 4 まで) があります。
各部門でループし、色の値 (1 から 4 まで) に従って、キーが色番号である関連部門で NSDictionary を埋めたいと思います。
例えば :
My Dictionary には、キーごとに n 個の部門番号 @"1" (色番号 = 1) などが含まれます。
ログには 1 つの値しか表示されません。私は辞書に記入していないことを記入します。
setValue、setObject で試しました.私が間違っていることがわかりません..
編集:
値を一時的に保存してオーバーライドしないように、for ループに配列を追加しました。
私のスイッチは役に立たないと感じています。特定の色の部門に応じた部門番号の配列を Dictionary の正しいキーに追加するにはどうすればよいですか?
さらに、ログを追加して、実際にいくつかの値があることを確認できるようにします。
ログ:
Department Number = 14
Color Number = 2
Department Number = 41
Color Number = 2
Department Number = 59
Color Number = 2
Department Number = 89
Color Number = 3
Department Number = 79
Color Number = 3
Department Number = 27
Color Number = 3
Department Number = 36
Color Number = 3
現在のコードは、ソース内の各要素の配列を初期化するため、各要素に 1 つの要素のみが含まれるようになります。
それはあなたの場合に動作しaddObject:
、配列が既に辞書に存在する場合は、アレイへ。
お気に入り:
NSMutableDictionary *deptDict = [[NSMutableDictionary alloc] init];
for (DetailDpt *detailDpt in self.detailDpts) {
NSString *key = detailDpt.color.stringValue;
if ([deptDict valueForKey:key]) {
[(NSMutableArray *)[deptDict valueForKey:key] addObject:detailDpt.numDept];
} else {
[deptDict setValue:[NSMutableArray arrayWithObject:detailDpt.numDept] forKey:key];
}
}
NSLog(@"deptDict = %@", deptDict);
...戻り値:
deptDict = {
2 = (
14,
41,
89
);
3 = (
79,
27,
36
);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加