[filteredArray filterUsingPredicate:
[NSPredicate predicateWithFormat:@"self BEGINSWITH[cd] %@", searchText]];
Run Code Online (Sandbox Code Playgroud)
filteredArray包含简单的NSStrings.[你好,我的,上,下,七等...];
它将提供所有以字符串开头的字符串searchText.
但是,如果字符串将是"我的名字是"等单词的组合,和searchText = name.将一个什么NSPredicate样子来实现这一目标?
更新:如果我想要一个结果searchText = name,但如果不想要结果,它将如何searchText = ame?也许是这样的:
[filteredArray filterUsingPredicate:
[NSPredicate predicateWithFormat:
@"self BEGINSWITH[cd] %@ or self CONTENTS[cd] %@",
searchText, searchText]];
Run Code Online (Sandbox Code Playgroud)
但它应该首先显示searchText以及包含的字符串开头的字符串searchText.
[NSPredicate predicateWithFormat:@"self CONTAINS[cd] %@", searchText];
Run Code Online (Sandbox Code Playgroud)
在扩展问题后编辑
NSArray *beginMatch = [filteredArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:
@"self BEGINSWITH[cd] %@", searchText]];
NSArray *anyMatch = [filteredArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:
@"self CONTAINS[cd] %@", searchText]];
NSMutableArray *allResults = [NSMutableArray arrayWithArray:beginMatch];
for (id obj in anyMatch) {
if (![allResults containsObject:obj]) {
[allResults addObject:obj];
}
}
filteredArray = allResults;
Run Code Online (Sandbox Code Playgroud)
这将得到所需顺序的结果,没有重复的条目.
| 归档时间: |
|
| 查看次数: |
4307 次 |
| 最近记录: |