iOS:更快地搜索/过滤数组

时间:2015-01-15 02:04:47

标签: ios objective-c nsmutablearray

我有一个NSMutableArray,我使用以下代码搜索(我通过raywenderlich的在线教程获得)。我希望有人可以告诉我一种方法来更快地搜索NSMutablearray?我的阵列有超过2000个提交,它有点慢。希望我能让它更快。我的filterList是我在tableview中显示的,searchList包含我的所有数据。

    @property(strong, nonatomic) NSMutableArray *mFilterList;
    @property(strong, nonatomic) NSMutableArray *mSearchList;



  - (void)filterContentForSearchText:(NSString *)searchText {
    NSPredicate *predicate =
    [NSPredicate predicateWithFormat:@"SELF.string contains[c] %@ || "
                                   @"SELF.title contains[c] %@ ",
                                   searchText, searchText];
    NSArray *tempArray =
     [self.mSearchList filteredArrayUsingPredicate:predicate];

    self.mFilterList = [NSMutableArray arrayWithArray:tempArray];
    }

1 个答案:

答案 0 :(得分:0)

搜索字段中包含的子字符串非常慢。如果你搜索完全匹配会更快。

如果您将正在搜索的内容打破为关键字并在您正在搜索的表中构建关键字索引表,则可以加快子字符串搜索速度。像SQL这样的数据库引擎要比NSArray好得多,因为它们包含了使得搜索速度更快的键控索引。