NSPredicate检查对象的属性是否退出,如果是,则获取它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSPredicate检查对象的属性是否退出,如果是,则获取它相关的知识,希望对你有一定的参考价值。
我甚至不确定这是可能的,但如果确实如此,它肯定会有所帮助。
我有NSArray
的NSDictionarie
s。
每个字典都有某些键(显然)。
Dict{
Title: WBCCount
Cat: Lab
}
Dict{
Title: HbM
Cat: Lab
Sex: Male
}
Dict{
Title: HbF
Cat: Lab
Sex: Female
}
Dict{
Title: PC_Count
Cat: CBC
Sex: Female
}
我想过滤数组的字典有Cat = 'Lab'
和IF Sex
作为关键字存在于字典对象中,得到一个Male
。
总之,我不能放在一起
predicateWithFormate:%@" Cat = Lab AND ( if Sex key is present, Sex = Male";
这会让我得到一系列的WBC, HbM
。
我不知道这是否可能,谓词中的一个条件,但如果它是通过Web API发送对象的方式,它将是一个救生员。
如果不是这样,任何其他实现目标的方式也会很棒。
虽然我们是核心数据的主题,但这应该很简单:我希望实体的属性能够存储NSDate
或NSNumber
或NSString
。有一个简单的方法吗?
答案
这里的诀窍是,在NSDictionary
中,一个非现有键只返回nil
:
NSArray *dictionaries = @[
@{ @"Title": @"T1", @"Cat": @"Lab", @"Sex": @"Male" },
@{ @"Title": @"T2", @"Cat": @"C2" },
@{ @"Title": @"T3", @"Cat": @"Lab", @"Sex": @"Female" },
@{ @"Title": @"T4", @"Cat": @"Lab" }
];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(Sex == nil OR Sex = 'Male') AND Cat = 'Lab'" ];
NSArray *result = [dictionaries filteredArrayUsingPredicate:pred];
另一答案
用于检查密钥存在的另一种语法(但仅适用于集合)是:
NSPredicate *p = [NSPredicate predicateWithFormat:@"Sex in SELF"]
我经常在Parse.com上使用它
以上是关于NSPredicate检查对象的属性是否退出,如果是,则获取它的主要内容,如果未能解决你的问题,请参考以下文章
iPhone NSPredicate 如何创建一个检查属性是不是有值的谓词?