1

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

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

}

非常感谢帮助。

4

2 回答 2

1

创建谓词的正确方法是没有这样的右括号:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type ==  %@", filterParameter];

您还泄漏了内存,因为您分配filterContacts了但是当您用 覆盖指针时丢失了对它的引用filteredArrayUsingPredicate:,只需删除[[NSArray alloc]init];即可摆脱泄漏。

于 2012-11-14T02:31:52.293 回答
0

试试这样:-

NSArray *filterContacts = [[NSArray alloc]init];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"category type[cd] %@,filterParameter];
filterContacts=[contacts filteredArrayUsingPredicate:predicate]mutableCopy]; 
于 2013-11-28T11:58:23.920 回答