objective-c – NSPredicate检查对象的属性是否退出,如果是,则获取它

我甚至不确定这是可能的,但如果确实如此,它肯定会有所帮助.

我有一个NSArray的NSDictionary.

每个字典都有某些键(显然).

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发送对象的方式,它将是一个救生员.

如果不是这样的任何其他方式实现目标也将是伟大的.

虽然我们是Core Data的主题,但这应该很简单:我希望实体的属性能够存储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];

转载注明原文:objective-c – NSPredicate检查对象的属性是否退出,如果是,则获取它 - 代码日志