- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码旨在捕获 Json 结果中的 NSNull,当响应为 null 时抛出异常。
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 转换为 0。不确定这与上面的交互方式如何,但在这里:
//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
最佳答案
您没有检查 response
是否为 NSNull
。我的方法是测试你想要什么,而不是你不想要什么:
NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
if (jsonResults) { // This won't be NSNull, it will be nil on error
NSDictionary *response = jsonResults[@"response"];
if ([response isKindOfClass:[NSDictionary class]]) {
NSNumber *insertId = response[@"insert_id"]; // Assumption
if ([insertId isKindOfClass:[NSNumber class]]) {
// Print value
}
}
} else {
// Report error
}
实际上,您需要知道哪些值是可选的以及哪些值可以是不同的类型,因为您不想使用 isKindOfClass
对整个模块进行编码。
关于IOS:从 JSON 中检测 NSNull 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37459560/
我遇到内存管理问题,无法在 iOS 上解决问题。我正在从 SQLite 数据库获取数据,其中某些单元格可能为空。因此,为了处理这种情况,如果为空,我将 [NSNull null] 分配给我的收件人,如
在我们的项目中,当网络上有东西返回 JSON 时,我们的 iPhone 应用程序偶尔会崩溃,其中包含 nil。当然,我们确实有一个帮助类,它负责处理此类问题。然而,人们很容易出错,并且确实在 NSDi
在苹果的例子中我看到了这个: myController *controller = [viewControllers objectAtIndex:page]; if ((NSNull *)contro
我在尝试显示标签时收到 [NSNull rangeOfCharacterFromSet:]: 异常。错误显示 'NSInvalidArgumentException', reason: '-[NSNu
我有一个简单的 NSMO,它有一个关系字段。有时我需要删除关系但保留对象。这是对象,它与 Person 具有一对一关系(person 与 LineUp 具有一对多关系): @objc (LineUp)
赏金事件只剩一天了! 您能否让自定义动画属性与 UIView animateWithDuration block 语法一起使用? 我一直致力于为自定义 CALayer 上的自定义动画属性创建我自己的隐
我正在尝试将字符串设置为“如果 [object objectForKey@"display_name"] 为 NULL,则不显示名称”。它在日志中崩溃了 2011-06-16 10:58:36.251
是否有可能让 Core Data 允许分配 NSNull?我正在使用 JSONKit它默认分配 NSNull。我希望能够像这样进行反序列化: - (void)deserialize:(NSDictio
针对iOS应用进行编码,我发现有潜在的原因禁止继承NSNumber,NSNull,... blabla。 如果我尝试这样做,编译器不会失败,但是运行会立即崩溃,而没有任何使用信息,有人知道原因吗? 最
我在错误消息中收到了以上内容。 [NSNull getCharacters:]: 我在文档中找不到它。谁能给我解释一下这是什么意思? 非常感谢。 编辑:这与链接到的关于 NSNull getChara
当使用键值编码在 NSArrays 上使用集合运算符(例如 @min、@max)时,如果出现以下情况之一,我会得到一个异常数组中的值为 NSNull null。 在使用 valueForKeyPath
我在以前的开发人员离开后转移到的项目中有以下 block NSObject *object = (NSObject *)string; if([object isEqual:[NSNull null]
我有一个循环,第一次运行良好,但第二次运行时我得到: -[NSNull count]: unrecognized selector sent to instance 0x3a094a70 *** T
if let action = self.info?["action"] { switch action as! String { .... } } else {...
我有一个这样结构的数组, [ { "Id": 20, "Name": "Name String", "Email
我实际上是在尝试在 Xcode8.1 上使用 Swift3 解析 Json 对象。这是我的代码: if let objData = objJson["DATA"] as! NSDictionary?
allItems是 NSMutableArray当用户单击加号按钮时,方法 createItem被叫。我试图只为每个偶数索引添加对象(类 BNRItem ),所以我尝试放置 NSNull 的实例对于奇
我的 iPhone 应用程序崩溃,出现以下错误: [724:95876] *** Terminating app due to uncaught exception 'NSInvalidArgumen
我有可能包含对象的 JSON 响应。在我的模型对象中,我这样做: _price3 = self.serverData[@"price3"]; 我想做类似的东西: _price3 = self.se
我遇到了这个异常,但我无法找出问题所在。 我尝试添加异常断点和符号断点,但它没有显示任何更有用的数据。它在 main.h 返回时崩溃,回溯中没有任何内容 这是异常(exception): 20
我是一名优秀的程序员,十分优秀!