をNSDictionary
使用して連絡先のクエリを実行したいNSPredicate
。「firstName」と「lastName」を別々に使用して連絡先を検索できますが、完全な名前が入力されている連絡先も検索する必要があります。
例:「JohnDoe」という名前の連絡先を検索し、検索キー「John」または「Doe」を入力して検索すると、名前を取得できますが、検索キー「JohnDoe」を入力します。現在私は使用しています:
NSPredicate *p1 = [NSPredicate predicateWithFormat:@"lastNames BEGINSWITH[cd] %@", searchText];
NSArray *p1FilteredArray = [allContacts filteredArrayUsingPredicate:p1];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"firstNames BEGINSWITH[cd] %@", searchText];
NSArray *p2FilteredArray = [allContacts filteredArrayUsingPredicate:p2];
searchedArray = [[p1FilteredArray arrayByAddingObjectsFromArray:p2FilteredArray] mutableCopy];
私は例えばこのようなことをします:
NSArray *_allContacts = // ...;
NSString *_searchText = // ...;
NSArray *_result = [_allContacts filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSDictionary * evaluatedObject, NSDictionary *bindings) {
return ([[[evaluatedObject valueForKey:@"lastNames"] lowercaseString] hasPrefix:[_searchText lowercaseString]] || [[[evaluatedObject valueForKey:@"firstNames"] lowercaseString] hasPrefix:[_searchText lowercaseString]]);
}]];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加