我想过滤下面的光盘数组,这是我的代码,但应用程序正在崩溃
NSPredicate *pred = [NSPredicate predicateWithFormat:@"Id contains[c] %@ ", string];
NSArray *result = [array filteredArrayUsingPredicate:pred];
返回结果;
[{
"Id": 1,
"VoteCode": "1"
}, {
"Id": 2,
"VoteCode": "1"
}, {
"Id": 3,
"VoteCode": "1"
}, {
"Id": 8,
"VoteCode": "12345"
}, {
"Id": 9,
"VoteCode": "103"
}, {
"Id": 10,
"VoteCode": "12345"
}]
答案 0 :(得分:1)
您的谓词格式错误。 CONTAINS
运算符用于字符串比较(请参阅predicate programming guide),但每个字典中的“Id”键不是字符串,而是数字。
您可以将您的Id存储为字符串,也可以使用其他谓词;例如:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K ==[cd] %@ ", @"Id", @1];