【发布时间】:2016-04-03 11:41:01
【问题描述】:
如果从 Json 数据中得到 NSMutableDictionary
NSMutableDictionary *returnedDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
我知道这个键returnedDict[@"data"][@"weather"][day][@"tides"] 在某些情况下是NSNull。所以我得到-[NSNull objectForKeyedSubscript:]
所以我尝试根据这个答案How to check if an NSDictionary or NSMutableDictionary contains a key?检查它是否为nil。
if (returnedDict[@"data"][@"weather"][day][@"tides"]){ some code }
和
if (returnedDict[@"data"][@"weather"][day][@"tides"]!=[NSNull null]){ some code}
不避免运行{一些代码}
如何正确检查?
【问题讨论】:
-
键为空还是值?
-
一般来说,明智的做法是让 if 子句中的任何内容都计算为真正的 BOOL。使用语言的副作用(在这种情况下'任何非零值都被认为是')不太可取,因为它可能会导致意外的误报(就像你的情况一样),它会使你的代码稍微不太清楚别人和你未来的自己。此外,现在有了 Swift,让它成为一种习惯是很聪明的,因为在 Swift 中,它要求任何 if 子句的计算结果为 Bool。
-
Value 是 NSNull 的一个实例
标签: ios objective-c