2017-01-17 19 views
0

オートコンプリートボックスの一部として、連絡先の配列内の名前を検索しています。しかし、ユーザーが提案リストから名前を選択した後は、連絡先オブジェクトの配列内にあるが、提案ボックスに表示される名前の配列ではない連絡先のIDを取得する必要があります。私はちょうど名前で働いていますが、それは私が提案ボックスに表示したいものですが、連絡先の配列も持っています。IOS/Objective-C:オブジェクトの配列で検索する文字列要素

オブジェクトのIDを追跡するために、名前の配列の代わりにオブジェクトの配列の名前のディメンションを検索するには、以下のコード(おそらくキー値を使用)を変換するにはどうすればよいでしょうか。私は、配列とキー値についてはあまり曖昧です。

//the array being searched looks something like @[@"John", @"Dave", @"Sam", @"Xian", @"Ahmed", @"Johann"]; 

//I want to search the names in an array that looks something like: 

(
     { 
     first = "John";cid = 2;}, 
     { 
     first = "Dave";cid = 44;}, 
     { 
     first = "Xian";cid=99}) 
//this code works great to search names but I lose track ids. Thank you for any suggestions. 

-(void)searchArray: (NSMutableArray*) array forString: (NSString *) term { 
    [_contactsSuggested removeAllObjects];  
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",term]; 
    NSArray *tempArray = [array filteredArrayUsingPredicate:predicate]; 
    _contactsSuggested = [NSMutableArray arrayWithArray:tempArray]; 
    [_autocompleteTableView reloadData]; 
} 
+0

連絡先モデルを作成することができます。 – aircraft

答えて

1

Contactオブジェクトを作成します。 nameプロパティ、idプロパティ、および必要なその他のプロパティを指定します。次に、名前の配列ではなく、Contactオブジェクトの配列を検索するコードを記述します。次に、predicateWithBlockを使用して述語を作成し、nameプロパティに一致する項目をフィルタすることができます。

関連する問題