下面的代码是我之前在我的应用程序中使用的代码。
以前:
if ([dic objectForKey:@"text"] isKindOfClass:[NSString class]] && [dic objectForKey:@"text"] != nil && [dic objectForKey:@"text"] != [NSNull Null]) {
NSString *text = [dic objectForKey:@"text"];
}
我已将代码更改为以下内容。
后:
if ([dic objectForKey:@"text"] isKindOfClass:[NSString class]]) {
NSString *text = [dic objectForKey:@"text"];
}
我相信结果应该是一样的,但后者更整洁。为了安全起见,我问这个问题是为了确保我是正确的,而不是忽略任何事情。
你更简单的代码就可以了。
如果[dic objectForKey:@"text"]
nil
,则甚至不会调用对isKindOfClass
的调用,并且实际上返回了false
的结果。
如果[dic objectForKey:@"text"]
不是nil
,那么它一定是一个要true
NSString
,所以没有必要检查它是否NSNull
。
换句话说,如果[[dic objectForKey:@"text"] isKindOfClass:[NSString class]]
是true
,那么你已经知道它没有nil
,你已经知道它不是NSNull
,所以不需要这些检查。