из NSDictionary Я получаю только 0 или ноль, что мне делать? - PullRequest
0 голосов
/ 24 октября 2011

это мой фрагмент

NSArray * alphabets = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z",nil];
NSMutableDictionary * alphaToNum = [NSMutableDictionary dictionary];

NSInteger index =0;

for (NSString * character in alphabets) {

    index++;
    [alphaToNum setObject:character forKey:[NSNumber numberWithInteger:index]];
}

NSLog(@"%@",[alphaToNum objectForKey:@"d"]);

и каждый раз, когда я пытаюсь получить какое-то значение для своего ключа, я получаю только 0.

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Тебе нужно ...

NSLog(@"%@",[alphaToNum objectForKey:[NSNumber numberWithInteger:[alphabets indexOfObject:@"d"]]]);
0 голосов
/ 24 октября 2011

Следующий код даст желаемый результат.

NSLog(@"%@",[alphaToNum objectForKey:[NSNumber numberWithInteger:4]]);

Проблема с вашим NSlog заключается в следующем.

Ключи состоят из номеров NSN, которые начинаются с 1, а не из алфавитов. => так как нет ключа с буквой 'd', он вернет вам ноль в ответ.

0 голосов
/ 24 октября 2011

Ваши ключи NSNumber s, ваши объекты - буквы от a до z. Нет объекта для ключа @ "d". Там будет объект, строка @ "d", для ключа [NSNumber numberWithInt:4]. Вы получили свои ключи и предметы неправильно? Что вы на самом деле хотите сделать?

...