【发布时间】:2014-10-02 17:37:02
【问题描述】:
我有一个字典数组如下
<__NSArrayI 0x10053e7c0>(
{
busType = "A/C SLEEPER";
fare = 700;
},
{
busType = "Volvo A/C B9R Multi-Axle Semi Sleeper";
fare = 500;
},
{
busType = "2+1 Hi-Tech Non A/c";
fare = 500;
},
{
busType = "Hitech Sleeper Cum Seater";
fare = 1500;
},
{
busType = "Hi-Tech Non A/c";
fare = 900;
},
{
busType = "Mercedes Benz Multi Axle";
fare = 1700;
})
现在我想过滤这个数组,考虑到 busType 键的值,即 A/C 或 Non A/c 加上 SLEEPER。所以我将这些值设置在两个 NSString 中以形成一个谓词,如下所示。
-(void)applyFilter:(UIButton *)sender{
if (ac_Value.length>1&&sleeper_Value.length>1) {
NSString *dictionaryKey = @"busType";
NSString *predicateString1 = ac_Value; // Set this NSString as A/C or Non A/c
NSString *predicateString2 = sleeper_Value; //Set this NSString as Sleeper or Non/Sleeper
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%K CONTAINS[cd] %@ %@",dictionaryKey,predicateString1,predicateString2];
NSArray *filteredArray = [busArray filteredArrayUsingPredicate:predicate];
NSLog(@"filtered array : %@", filteredArray);
}
}
但是,我一直无法通过谓词形成部分,这会给出如下错误。感谢任何帮助。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "%K CONTAINS[cd] %@ %@"'
【问题讨论】:
标签: ios objective-c nsarray nsdictionary nspredicate