NSJSONSerialization с целым числом

Я пишу приложение для iOS, которое получает данные из веб-запроса. Запрос возвращает следующее:{"hash":"0369a5d5e65335309b2b1502dc96b5aba691b9451c83b9","error":0}

Я получаю данные от NSData* responseData объект следующим образом:

NSDictionary* JSONdata = [NSJSONSerialization JSONObjectWithData:_responseData options:0 error:&error];

NSInteger responseError = (NSInteger)[JSONdata objectForKey:@"error"];

Тем не мение, responseError возвращается неинициализированным (заполненным значениями мусора). Я пытался изменить NSInteger в NSString* но это приводит к следующей ошибке

'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x9d02220'

Есть идеи?

1 ответ

Вам нужно использовать NSNumber. Примитивные значения не будут работать, поскольку iOS анализирует данные в объектах NSO: NSArray, NSDictionary, NSNumber, NSString и NSNull.

Попробуй это: NSNumber *responseError = [JSONdata objectForKey:@"error"];

Затем, чтобы преобразовать в NSInteger, вы можете сделать это:
NSInteger responseInt = [responseError integerValue]; это вернет целочисленное значение.

Также для дальнейшего использования NSDictionary не может содержать никаких примитивных значений.

Другие вопросы по тегам