我想實現搜索我的應用程序。如果你在搜索欄中寫了一個確切的單詞,那沒關係,但是例如,如果我想找到「book」,並且輸入「böök」變音符號應該不重要。我正在使用下面的代碼,但它沒有用,而且在搜索時也失敗了,例如「紐約 - 比約克」。我也嘗試過不同的searchEditedText組合,但代碼變得噁心。我怎樣才能做到這一點?如何在搜索時忽略unicode字符?
NSString *searchText = [searchBar.text capitalizedString];
NSString *searchEditedText=[searchBar.text capitalizedString];
NSMutableArray *searchArray = [[[NSMutableArray alloc] init] autorelease];
for (NSDictionary *dictionary in listOfItems) {
NSArray *array = [dictionary objectForKey:@"Names"];
[searchArray addObjectsFromArray:array];
}
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"u" withString:@"ü"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"c" withString:@"ç"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"U" withString:@"Ü"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"C" withString:@"Ç"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"o" withString:@"ö"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"O" withString:@"Ö"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"g" withString:@"ğ"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"G" withString:@"Ğ"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"s" withString:@"ş"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"S" withString:@"Ş"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"i" withString:@"ı"];
searchEditedText = [searchEditedText stringByReplacingOccurrencesOfString:@"İ" withString:@"I"];
for (NSString *sTemp in searchArray) {
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
NSRange titleResultsRange2 = [sTemp rangeOfString:searchEditedText options:NSCaseInsensitiveSearch];
if (titleResultsRange2.length > 0 || titleResultsRange.length > 0) {
[copyListOfItems addObject:sTemp];
}
}
我不使用核心數據,我看這個問題的答案,但我認爲它並不能解決「O-O,U-U,......等等」?儘管如此,我試過了,它沒有奏效。 – David 2012-07-14 11:06:37
那麼NSPredicate搜索只適用於核心數據,所以使用它的東西是不是這樣,將無法正常工作。你應該與你使用搜索已經即信息的機制的細節你的問題是擴大你目前正在使用搜索數據存儲在SQLite數據庫還是其他什麼東西,什麼機制中的數據。 – Petesh 2012-07-14 12:58:43
謝謝,我擴展了我的問題。另外,如果有一個解決方案「寫'böök',找到'書''與核心數據,我可以使用它沒有問題。 – David 2012-07-14 13:46:04