Следующий код, предназначенный для поиска результатов NSNull в Json, генерирует исключение, когда ответ равен NULL.IOS: обнаружение NSNull от JSON не работает
NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"jsonResults are:%@",jsonResults);
if (![jsonResults isKindOfClass:[NSNull class]]&&!
[jsonResults[@"response"][@"insert_id"]isKindOfClass:[NSNull class]]&&!
(jsonResults==nil)){
//do something
}
Когда происходит исключение, линия начала if (![json...
в зеленый цвет и сообщение об ошибке гласит:
Results: {
code = 400;
response = "0(NSNull)";
}
2016-05-26 07:18:06.327 idaru[385:60b] -[NSNull
objectForKeyedSubscript:]: unrecognized selector sent to instance
0x38871a70
2016-05-26 07:18:06.329 myapp[385:60b] *** Terminating app due to
uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull
objectForKeyedSubscript:]: unrecognized selector sent to instance
0x38871a70'
Можно ли предположить, что может быть не так?
Обратите внимание: у меня есть категория, которая якобы преобразует NSNulls в 0s. Не знаю, как это взаимодействует с выше, но здесь это:
//NSNull+JSON.m
@implementation NSNull (JSON)
- (NSUInteger)length { return 0; }
- (NSInteger)integerValue { return 0; };
- (float)floatValue { return 0; };
- (NSString *)description { return @"0(NSNull)"; }
- (NSArray *)componentsSeparatedByString:(NSString *)separator { return @[]; }
- (id)objectForKey:(id)key { return nil; }
- (BOOL)boolValue { return NO; }
@end
Что вы получите в ответ? напечатайте его здесь. Вы получаете пустую строку или null? обе разные вещи – Lion
response = "0 (NSNull)"; – zztop
Я спрашиваю, что вы получаете в 'jsonResults'? – Lion