Как получить целочисленное значение из 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, и я получил тот же ответ.
Спасибо, заранее.
Ответы
Ответ 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];
Обратите внимание также на новый синтаксис подписи для словарей.