Pat*_*ick 8 iphone cocoa objective-c
1.
id dicValue = [aDictionary objetForKey:@"aKey"];
if(dicValue != nil)
{
blablala...
}
Run Code Online (Sandbox Code Playgroud)
要么
2.
if(dicValue != [NSNull null])
{
blablala...
}
Run Code Online (Sandbox Code Playgroud)
我应该选择第一个还是第二个?
或者当它出现时:
3.
if ([aDictionary objetForKey:@"aKey"] != nil)
Run Code Online (Sandbox Code Playgroud)
要么
4.
if ([aDictionary objetForKey:@"aKey"] != [NSNull null])
Run Code Online (Sandbox Code Playgroud)
什么又一次?
1.2.3.4.这是正确的和推荐的?
Par*_*fna 18
直接来自Apple文档.
NSNull类定义了一个单例对象,用于在禁止nil作为值的情况下(通常在集合对象(如数组或字典)中)表示空值.
NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = [NSArray arrayWithObject:nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
// output: "arrayWithNull: (<null>)"
Run Code Online (Sandbox Code Playgroud)
重要的是要理解NSNull实例在语义上与NO或false不同 - 这两者都代表逻辑值; NSNull实例表示缺少值.NSNull实例在语义上等同于nil,但是重要的是要理解它不等于nil.要测试空对象值,必须进行直接对象比较.
id aValue = [arrayWithNull objectAtIndex:0];
if (aValue == nil) {
NSLog(@"equals nil");
} else if (aValue == [NSNull null]) {
NSLog(@"equals NSNull instance");
if ([aValue isEqual:nil]) {
NSLog(@"isEqual:nil");
}
}
// output: "equals NSNull instance"
Run Code Online (Sandbox Code Playgroud)
现在很清楚吗?
| 归档时间: |
|
| 查看次数: |
6860 次 |
| 最近记录: |