簡體   English   中英

在Objective C中使用NSPredicate過濾自定義對象的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM