не удается получить значение из NSDictionary, которое, как ожидается, будет иметь NSNumber в качестве вывода

#objective-c #nsdictionary

#objective-c #nsdictionary

Вопрос:

Я создал NSDictionary следующим образом :

 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];

    alphaToNum = [NSMutableDictionary dictionary];
    numToAlpha = [NSMutableDictionary dictionary];

for(NSString* character in alphabets)
    {

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

теперь я хочу получить доступ к «numToAlpha» следующим образом :

 NSInteger code1;
NSNumber * nn = [numToAlpha objectForKey:code1];
 

и я получу ошибку, тогда как в руководстве для objectforkey четко указано (id)objectforkey(id), что означает что угодно!

Ответ №1:

NSInteger не является объектом. id относится к любому типу объекта. Вам нужно использовать [NSNumber numberWithInteger:code1] так, как вы уже делаете в своем примере кода.