Ios 使用谓词时为空值
下面这个苹果iOS文档中的例子充满了垃圾和错误,我怀疑他们是否将代码放入了Xcode! 然而,我真的很想知道作家到底想向可怜的读者展示什么! 有人能纠正那些蹩脚的代码,使它对主题有意义吗 谢谢 ================ 空值 比较谓词不匹配除null(nil)之外的任何null值,或者NSNull null值(即,($value==nil)在$value为nil时返回YES)。考虑下面的例子。Ios 使用谓词时为空值,ios,objective-c,nspredicate,Ios,Objective C,Nspredicate,下面这个苹果iOS文档中的例子充满了垃圾和错误,我怀疑他们是否将代码放入了Xcode! 然而,我真的很想知道作家到底想向可怜的读者展示什么! 有人能纠正那些蹩脚的代码,使它对主题有意义吗 谢谢 ================ 空值 比较谓词不匹配除null(nil)之外的任何null值,或者NSNull null值(即,($value==nil)在$value为nil时返回YES)。考虑下面的例子。 谓词与包含键名值Ben的字典匹配,但与键名没有值的字典不匹配。首先更正。字面意思是错误的
谓词与包含键名值Ben的字典匹配,但与键名没有值的字典不匹配。首先更正。字面意思是错误的:
NSArray *array = @[
@{ @"lastName" : @"Turner" },
@{
@"firstName" : @"Ben",
@"lastName" : @"Ballard",
@"birthday" : [NSDate dateWithString:@"1972-03-24 10:45:32 +0600"]
}
];
我把它美化了一点。(是吗?)
它想表明,与nil
的值进行比较时,结果总是NO
,除了与之比较的常数是一种null(nil
,[NSNull null null]
,可能也是,但没有记录在案的nil
)
此外,这似乎更重要,它想表明,如果将一种空值与nil
的值进行比较,它的计算结果为YES
。由于以下问题,必须澄清这一点:
id a = nil;
id b = a; // Pretty equal
if ([a isEqual:b])
{
// not reached, because isEqual: will return NO (nil behavior)
}
当您按名字筛选时,为什么希望它给您一个没有名字的条目?如果您想获取所有名字,为什么还要应用谓词?只需获取全部而不使用谓词。但是,如果您想使用谓词thn而不是设置firstName nil,请将谓词设置为nil。NSArray*filteredArray=[array filteredArray使用谓词:nil];:p@iVishal+@CrimsonChris:演示代码来自《苹果指南》,它是关于谓词的。请点击我原始问题中的链接。阿明·内格姆·阿瓦德:谢谢你的回答!如果未达到([a isEqual:b]),是因为两个“nil”对象(指针)的内容不相等吗?这是因为发送到
nil
的消息的结果始终为0(对于布尔类型,这意味着NO
)。因此,a
是nil
才是重要的。(但是如果b
不是nil
,没有人会奇怪为什么会返回NO
。
id a = nil;
id b = a; // Pretty equal
if ([a isEqual:b])
{
// not reached, because isEqual: will return NO (nil behavior)
}