目前我使用這個通過我的字典的數組(從plist文件)搜索:Objective-C - 比NSCaseInsensitiveSearch更好的搜索?關鍵詞? NSPredicate?
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我可以簡單地搜索整個數組([email protected]"name")
而不用考慮Case。好!
比如我可以搜索:@"banana"
和發現:香蕉一個(黃色)
,我可以搜索:@"two"
和發現:蘋果二(白)
,我可以搜索:@"banana
一個」,並找到:香蕉一個(黃色)
我還可以搜索:@"Orange"
並找到:菠蘿三(橙色)
但只有當變奏h是在正確的順序
我不能搜索:@"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(黃色)