![](/img/trans.png)
[英]Filter Array of Custom Data Class With NSPredicate in Objective-C
[英]Filter Array of custom objects using NSPredicate in Objective C
我有一個包含自定義對象字典的數組。我想在UITableView中過濾該數組以獲取搜索功能。 這是我使用NSPredicate進行單個對象過濾的代碼。
self.searchResultForName = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
ObjectHolder *obj = (ObjectHolder*)evaluatedObject;
return [obj.Name hasPrefix:searchText];
}]];
使用上面的代碼,我只能搜索Name,但我想搜索By Name和ID.Also搜索將不區分大小寫。 我怎么能在Objective-C中做到這一點?。請建議任何更好的方法來做到這一點。
假設您的ObjectId屬性是NSInteger,您可以嘗試像這樣過濾它:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Name =[c] %@ OR ObjectId =[c] %ld", searchText, searchId];
NSArray *filteredArray = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:predicate];
你試過||
嗎? OR運算符和lowercaseString
.i沒有檢查,只要給它一個try.plz,如果它有任何正確的語法。
self.searchResultForName = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
ObjectHolder *obj = (ObjectHolder*)evaluatedObject;
return [[obj.Name lowercaseString] hasPrefix:[searchText lowercaseString]] || [[obj.ID lowercaseString] hasPrefix:[searchText lowercaseString]] ;
}]];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.