2012-11-14 45 views
1

我有一个可变数组其中包括触点的字典如何筛选字典的NSMutableArray?

[ 
{ 
"name":"" 
"Email":"" 
type:"A" 
}, 
"name":"" 
"Email":"" 
type:"B" 
} 
"name":"" 
"Email":"" 
type:"C" 
}........100 contacts 
] 

我想按类型A,B或C,其由分割switch.My问题如何使用谓词以过滤小心地过滤它们这种情况。

这里是我的执行筛选

-(NSArray *)filtercontcts:(NSString *)filterParameter 
{ 
    NSArray *filterContacts = [[NSArray alloc]init]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@)",filterParameter]; 

    filterContacts= [contacts filteredArrayUsingPredicate:predicate]; 

    return filterContacts; 

} 

帮助深表感谢感谢。

回答

1

正确的方式来创建谓词没有结束括号是这样的:

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

因为你分配filterContacts但随后失去对它的引用,当你与filteredArrayUsingPredicate:覆盖指针时,也出现了泄漏内存,只需删除[[NSArray alloc]init];以摆脱泄漏。

+0

弧不照顾它? –

+0

我尝试过使用你的代码,但不工作 –

+0

@DheerajKaveti它在测试脚本中完美地工作在这里。 – JustSid

0

尝试这样的: -

NSArray *filterContacts = [[NSArray alloc]init]; 
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"category type[cd] %@,filterParameter]; 
filterContacts=[contacts filteredArrayUsingPredicate:predicate]mutableCopy];