目前我正在使用它来搜索我的字典数组(来自 plist 文件):
for(NSDictionary *wine in mainArray)
{
NSString *wineName = [wine objectForKey:@"name"];
NSRange range = [wineName rangeOfString:searchText options:NSCaseInsensitiveSearch];
if(range.location != NSNotFound)
[searchArray addObject:wine];
}
在这个问题中,我将以这个 plist 为例:
<array>
<dict>
<key>name</key>
<string>Banana One (Yellow)</string>
<key>value</key>
<string>1</string>
</dict>
<dict>
<key>name</key>
<string>Apple Two (White)</string>
<key>value</key>
<string>2</string>
</dict>
<dict>
<key>name</key>
<string>Pineapple Three (Orange)</string>
<key>value</key>
<string>3</string>
</dict>
<dict>
</array>
(不在乎值)
好的,当我将 UISearchBar 与 NSCaseInsensitiveSearch 一起使用时,我可以简单地搜索数组(ObjectForKey=@"name")
而不考虑大小写。好的!
例如我可以搜索:@"banana"
并找到:香蕉一号(黄色)
我可以搜索:@"two"
并找到:Apple Two(White)
我可以搜索:@"banana
一个”并找到:香蕉一号(黄色)
我还可以搜索:@"Orange"
并找到:菠萝三(橙色)
但前提是搜索顺序正确
我无法搜索:@"One Banana"
或者
我真的希望能够像这样搜索,也许使用关键字@"Yellow One"
?@"Yellow Banana"
也许是这样的?:
for(NSDictionary *wine in mainArray)
{
NSArray *myArray = [searchText componentsSeparatedByString:@" "];
NSString *wineName = [wine objectForKey:@"name"];
NSRange range = [wineName rangeOfString:myArray options:NSCaseInsensitiveSearch];
if(range.location != NSNotFound)
[searchArray addObject:wine];
}
我知道这真的行不通,但我想你知道我的意思吗?那么,如何能够搜索例如:@"one banana"
并找到 :Banana One(黄色)