如何过滤字典的NSMutableArray?

时间:2012-11-14 02:20:38

标签: ios dictionary nsmutablearray nsdictionary

我有一个可变数组,其中包含联系人词典

[
{
"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;

}

感谢非常感谢。

2 个答案:

答案 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];