我正在尝试将filteredArrayUsingPredicate与根据.plist文件中的数据构建的数组一起使用。不知怎的,它似乎永远不会过滤我的数组。
这就是我的数组的构建方式:
DrillDownAppAppDelegate *AppDelegate = (DrillDownAppAppDelegate *)[[UIApplication sharedApplication] delegate];
self.tableDataSource = [AppDelegate.data objectForKey:@"Rows"];
copyDataSource = [ tableDataSource mutableCopy];
然后我的谓词就是这样,
NSString *searchFor = search.text;
[tableDataSource release];
tableDataSource = [copyDataSource mutableCopy];
if ([searchFor length] > 0) {
NSLog(@"array = %@",tableDataSource);
NSPredicate *pred = [NSPredicate predicateWithFormat:@"Self beginswith[c] %@",searchFor];
[tableDataSource filteredArrayUsingPredicate:pred];
}
答案 0 :(得分:6)
-[NSArray filteredArrayUsingPredicate:]
返回包含结果的新数组 -[NSMutableArray filterUsingPredicate:]
就地过滤。 请改用以下内容:
[tableDataSource filterUsingPredicate:pred];
答案 1 :(得分:1)
我认为你需要在字符串中使用引号来替换为predicateWithFormat:方法。即:
NSPredicate * pred = [NSPredicate predicateWithFormat:@“self beginwith [c] \”%@ \“”,searchFor];
还尝试使用“self”一词作为全部小写,如关键字“self”,并记住对象的实例应该以小写字母开头。例如,“appDelegate”。