filteredArrayUsingPredicate不工作

时间:2011-02-01 14:13:06

标签: iphone nsmutablearray nspredicate

我正在尝试将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];
}

2 个答案:

答案 0 :(得分:6)

  • -[NSArray filteredArrayUsingPredicate:]返回包含结果的新数组
  • -[NSMutableArray filterUsingPredicate:]就地过滤。

请改用以下内容:

[tableDataSource filterUsingPredicate:pred];

答案 1 :(得分:1)

我认为你需要在字符串中使用引号来替换为predicateWithFormat:方法。即:

NSPredicate * pred = [NSPredicate predicateWithFormat:@“self beginwith [c] \”%@ \“”,searchFor];

还尝试使用“self”一词作为全部小写,如关键字“self”,并记住对象的实例应该以小写字母开头。例如,“appDelegate”。