У меня есть цикл, который создает ключ (на основе алфавита) и значение пустого массива.Невозможно добавить значения в NSMutableDictionary
-(id)init
{
if (self = [super init]){
addressbook=[[NSMutableDictionary alloc] init];
//loop over the alphabetArray and add to an adressbook dictionary
for(char a = 'a'; a <= 'z'; a++){
NSMutableArray * personenArrayTemp = [[NSMutableArray alloc] init];
[addressbook setValue:personenArrayTemp forKey:[NSString stringWithFormat:@"%c", a]];
}
}
return self;
}
Далее я добавить человека в моей адресной книге, получив первую букву имени и с помощью, чтобы посмотреть ключ для этой буквы в адресной. После обнаружения я добавляю объект person.
-(void)addAddressbook:(Persoon *)persoon{
NSString *firstLetter = [persoon.naam substringToIndex:1];
[[addressbook objectForKey:firstLetter] addObject:persoon];
//NSLog(@"%@",firstLetter);
for(NSString *key in addressbook){
NSLog(@"key=%@ , value=%@ ", key,[addressbook objectForKey:key]);
}
}
NSLog в цикл только возвращает это:
2012-02-27 16:26:20.152 Adresboek[4828:503] key=p , value=(
)
2012-02-27 16:26:20.155 Adresboek[4828:503] key=c , value=(
)
2012-02-27 16:26:20.190 Adresboek[4828:503] key=b , value=(
)
.
.
.
2012-02-27 16:26:20.223 Adresboek[4828:503] key=o , value=(
)
Все значения являются пустыми.
РЕШИТЬ, он вернулся заглавную букву
Попробуйте 'для (NSString * key in [адресная книга allKeys]) {' –
Я получаю тот же результат – Stofke
Еще одна странная вещь: вы добавляете тот же экземпляр массива для каждой буквы (так что все буквы имеют один и тот же массив). Я ожидаю увидеть, что тот же самый человек повторяется под всеми письмами. Является ли словарь перезагружен где-то? – Dirk