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 не может содержать никаких примитивных значений.