Подтвердить что ты не робот

Как получить целочисленное значение из NSDictionary?

У меня такая странная проблема. NSDictionary не возвращает правильное целочисленное значение.

Код ответа JSON с сервера.

{
"status":"ok",
"error_code":0,
"data" : [],
"msg":"everything is working!"
}

JSON преобразуется в NSDictionary.

NSError *error = nil;
NSDictionary *jsonDict = [NSJSONSerialization
                          JSONObjectWithData:data
                          options:NSJSONReadingMutableContainers
                          error: &error];

Я получаю доступ к значению NSDictionary, используя следующий код.

int error_code = (int)[jsonDict valueForKey:@"error_code"]
NSLog(@"%i", error_code);
The log outputs the following: 143005344

Я даже попробовал objectForKey, и я получил тот же ответ.

Спасибо, заранее.

4b9b3361

Ответ 1

Да выводит указатель на значение и поэтому вы видите этот вывод журнала.

Вы не можете наложить указатель на целое число и ожидать значения.

int error_code = [[jsonDict valueForKey:@"error_code"] integerValue];

или если вы хотите использовать современный objective-c

int error_code = [jsonDict[@"error_code"] integerValue];

Ответ 2

Числа хранятся в виде NSNumber экземпляров в словарях plist/json. Попробуйте назвать один из NSNumber геттеров вроде intValue:

int error_code = [jsonDict[@"error_code"] intValue];

Обратите внимание также на новый синтаксис подписи для словарей.