2011-07-13 16 views
2

辞書の配列を検索しようとしています。各辞書には、名前、年齢、および肩書きのような異なるキーと値があります。辞書の配列内の辞書の値を検索する

- (void) searchTableView { 

NSString *searchText = searchBar.text; 
NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

for (NSDictionary *dictionary in listOfItems) 
{ 
    NSArray *array = [dictionary valueForKey:@"Name"]; 
    [searchArray addObjectsFromArray:array]; 
} 

for (NSString *sTemp in searchArray) 
{ 
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

    if (titleResultsRange.length != 0) 
     [copyListOfItems addObject:sTemp]; 
} 

[searchArray release]; 
searchArray = nil; } 

検索がうまくいくと、データが正しく表示されます。

私は、次のコードでのチュートリアルに基づいて検索を行います。

問題は、結果のいずれかを選択すると間違った場所を指し示すことになります。ここ

は、選択された行は、詳細ビューに向けられている方法である。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSString *selectedName = nil; 

    if(searching) 

    selectedName = [copyListOfItems objectAtIndex:indexPath.row]; 

    else { 

     selectedApp = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"Name"];  
    } 

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 

DetailViewController *controller = [[DetailViewController alloc] initWithAppData:[dao libraryItemAtIndex:indexPath.row] nibName:@"DetailViewController" bundle:[NSBundle mainBundle]]; 

controller.selectedName = selectedName; 

    [self.navigationController pushViewController:controller animated:YES]; 
    [controller release]; 
    [DetailViewController release]; 

}

私が正しい場所を指すように方法を必要とします。

私がメインアレイで探している名前のインデックスを見つけることができたら、それは素晴らしいことでしょう。

これで私が助けてくれれば幸いです。

+0

'listOfItems'の配列に正しいインデックスがありますか?その配列がどこから来るのかはあなたのコードからは分かりません。 –

答えて

-1

UITableViewCellをサブクラス化して、セル内に表示されている場所(辞書や配列のどの位置など)を正確に見つけたかを格納するフィールドを追加できます。次に、セルがクリックされたときに簡単に取得できます。

関連する問題