我有一个可变数组,其中包含联系人词典
[
{
"name":""
"Email":""
type:"A"
},
"name":""
"Email":""
type:"B"
}
"name":""
"Email":""
type:"C"
}........100 contacts
]
我希望按分段开关处理的类型A,B或C过滤它们。我的问题是如何使用谓词来过滤这种类型的情况。
这是我的过滤实现
-(NSArray *)filtercontcts:(NSString *)filterParameter
{
NSArray *filterContacts = [[NSArray alloc]init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@)",filterParameter];
filterContacts= [contacts filteredArrayUsingPredicate:predicate];
return filterContacts;
}
感谢非常感谢。
答案 0 :(得分:1)
创建谓词的正确方法是没有这样的结束括号:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@", filterParameter];
你也在泄漏内存,因为你分配了filterContacts
,但是当你用filteredArrayUsingPredicate:
覆盖指针时就失去对它的引用,只需删除[[NSArray alloc]init];
即可解除泄漏。
答案 1 :(得分:0)
试试这样: -
NSArray *filterContacts = [[NSArray alloc]init];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"category type[cd] %@,filterParameter];
filterContacts=[contacts filteredArrayUsingPredicate:predicate]mutableCopy];