我有一只名为NSMutableArray
的动物。我需要创建一个NSMutableDictionary
,以便动物数组中的所有名称都以Keys
开头,并以特定的第一个字母= Values
开头。
这是动物阵列:
NSMutableArray *animals = [NSMutableArray arrayWithObjects:@"Bear", @"Black Swan", @"Buffalo", @"Camel", @"Cockatoo", @"Dog", @"Donkey", @"Emu", @"Giraffe", @"Greater Rhea", @"Hippopotamus", @"Horse", @"Koala", @"Lion", @"Llama", @"Manatus", @"Meerkat", @"Panda", @"Peacock", @"Pig", @"Platypus", @"Polar Bear", @"Rhinoceros", @"Seagull", @"Tasmania Devil", @"Whale", @"Whale Shark", @"Wombat", nil];
这是我将其设置为MutableDictionary
:
for(NSString *str in animals) {
NSString *firstLetter = [str substringToIndex:1];
NSArray *newArr = [NSArray arrayWithObject:str];
[myMutableDictionary setValue:newArr forKey:firstLetter];
}
问题是,对于每个键只设置了一个值,但我需要所有对象都有一个具有相同值的第一个字母。例如。 value ='b' - > @“熊”,@“黑天鹅”,@“布法罗”。
答案 0 :(得分:6)
尝试
for (NSString *str in animals) {
NSString *firstLetter = [str substringToIndex:1];
if(!myMutableDictionary[firstLetter])
{
myMutableDictionary[firstLetter] = [NSMutableArray new];
}
NSMutableArray *arr = myMutableDictionary[firstLetter];
[arr addObject:str];
}
答案 1 :(得分:0)
以下是满足您要求的代码。
第1步:分配NSMutableDictionary
。
第2步:在解析NSArray
时,检查初始是dictionary
中可用的密钥还是什么。如果可用,那么来自同一个键的数组并在array
中添加新元素并在same key
中更新dictionary
。如果不可用,请在new key
中创建dictionary
。这是代码。
NSMutableDictionary* dictTemp = [[NSMutableDictionary alloc]init];
for (NSString *str in animals) {
NSString *firstLetter = [str substringToIndex:1];
if([[dictTemp allKeys] containsObject:firstLetter]){
NSMutableArray* arrayInner = [NSMutableArray arrayWithArray:[dictTemp valueForKey:firstLetter]];
[arrayInner addObject:str];
[dictTemp setValue:arrayInner forKey:firstLetter];
}
else{
NSMutableArray* arrayInner = [[NSMutableArray alloc] init];
[arrayInner addObject:str];
[dictTemp setValue:arrayInner forKey:firstLetter];
}
}
NSLog(@"Output : %@",dictTemp);