【发布时间】:2017-05-06 15:25:28
【问题描述】:
下面的代码是我之前在我的应用程序中使用的代码。
之前:
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"];
}
我相信结果应该是一样的,但后者更整洁。为了安全起见,我提出这个问题是为了确保我对此是正确的,并且没有忽略任何事情。
【问题讨论】:
-
我会这样写:
id obj = dic[@"text"]; if ([objc isKindOfClass: [NSString class]]) {etc}。但在针对类集群进行测试时请注意:stackoverflow.com/questions/1096772/… -
那个类集群警告很有趣,但在这里真的不适用。此外,该问题的两个最佳答案严重误解了苹果的观点。苹果只是建议,如果你有一些接口规定一个对象将是一种类型,你应该遵守该合同,然后你不应该在幕后测试它是否真的是集群的另一个类型并尝试利用它。在这种情况下,没有这样的合同。
-
对了,你可以使用
dic[@"text"]。
标签: objective-c null