Значения не добавляются в мой NSMutableDictionary - PullRequest
0 голосов
/ 07 апреля 2011

Я пытаюсь динамически добавить несколько значений в NSMutableDictionary. Однако, используя следующий код, я добавляю значения, используя первую букву в качестве ключа для временного словаря, а затем, наконец, добавляю его в свой словарь имен, но он просто перезаписывает каждое значение для соответствующего ключа

NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] init] autorelease];
for (NSString *drugStr in listContents) {
    NSString *substring = [drugStr substringToIndex:1];
    [dictionary setValue:drugStr forKey:substring];     
}
names = [[NSDictionary alloc] initWithDictionary:dictionary];
[dictionary release];

Что я делаю не так?

1 Ответ

0 голосов
/ 07 апреля 2011

Вы должны определить свой NSDictionary для использования NSString в качестве ключа и NSArray в качестве значения.

Тогда вам нужно просто получить свое значение в соответствии с заданным ключом. Если результат равен нулю, то вам нужно создать новый NSMutableArray, к которому вы добавляете значение выше. Если результат не ноль, добавьте значение в массив.

NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] init] autorelease];
for (NSString *drugStr in listContents) {
    NSString *substring = [drugStr substringToIndex:1];
    NSMutableArray *valueArray = (NSMutableArray*)[dictionary objectForKey:substring];
     if(valueArray==nil){
         NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:5];
         [newArray addObject:drugStr];
         [dictionary setObject:newArray forKey:substring];
     }else{
         [valueArray addObject:drugStr];
     }

}
names = [[NSDictionary alloc] initWithDictionary:dictionary];
[dictionary release];
...