【发布时间】:2014-03-16 13:41:37
【问题描述】:
我的搜索谓词中使用了一堆字符串——我想将它们放入一个数组并搜索数组,而不是单独搜索它们,因为单独搜索它们是 SLOW
现在这就是我的字符串的设置方式
- (NSString *)searchableStringValue {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"1234 "];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@""];
return searchString;
}
- (NSString *)searchableStringValueTwo {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"ȵ"];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@"n"];
return searchString;
}
- (NSString *)searchableStringValueThree {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"ŋ"];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@"ng"];
return searchString;
}
- (NSString *)searchableStringValueFour {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"Ẓ"];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@"r"];
return searchString;
}
- (NSString *)searchableStringValueFive {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"v"];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@"w"];
return searchString;
}
- (NSString *)searchableStringValueSix {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@"1234"];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@""];
return searchString;
}
- (NSString *)searchableStringValueSeven {
NSCharacterSet *invalidSet = [NSCharacterSet characterSetWithCharactersInString:@" "];
NSString *searchString = [[pro componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@""];
return searchString;
}
所以我想问将这些家伙放入数组的最佳方法是什么? 这甚至是最好的事情吗?!还是我只是愚蠢?有没有更好的方法来做到这一点?!
编辑:
搜索过滤器:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"(head beginswith[c] %@) OR (pro beginswith[c] %@ OR (searchableStringValue beginswith[c] %@) OR (searchableStringValueTwo beginswith[c] %@) OR (searchableStringValueThree beginswith[c] %@) OR (searchableStringValueFour beginswith[c] %@) OR (searchableStringValueFive beginswith[c] %@) OR (searchableStringValueSix beginswith[c] %@) OR (searchableStringValueSeven beginswith[c] %@))", searchText, searchText, searchText, searchText, searchText, searchText, searchText, searchText, searchText];
searchResults = [cdh filteredArrayUsingPredicate:resultPredicate];
}
【问题讨论】:
-
什么是
pro?什么是慢?您多久调用一次这些方法而不是使用结果? -
Pro 是我称之为 Words 的类中的一个对象。我更新了上面的问题以包括我的搜索谓词——它显示了我在哪里使用字符串。当使用搜索栏+搜索栏显示控制器输入条目时,键盘变得非常非常慢;即,如果我输入“b”,则 b 键将在按下约 4 秒后进行动画处理,然后最小化让我输入下一个字母。我只是打电话给他们以获得结果。
-
创建一个数组,将对象放入数组中。可能最简单的是 NSMutableArray。阅读有关 NSArray 和 NSMutableArray 的 Apple 规范(了解 NSMutableArray 也实现了 NSArray 的所有方法)。
-
你不能用所有不同的替换从
pro创建一个字符串吗? -
@Wain 工作...似乎还是有点慢...有没有办法让它snappier 一点。不管怎样,你回答了我的问题——添加一个答案,我会给你
标签: ios arrays string nsstring nsarray