在未过滤的NSMutableArray中查找已过滤的NSMutableArray(来自searchResultsTableView)中所选行的等效索引

时间:2012-11-14 04:38:41

标签: ios nsmutablearray

如果我的问题不清楚,因为我不熟悉iOS编程(以及一般的编程),请提前道歉。

现在,我有UITableView显示用户朋友姓名的字母NSMutableArray,如:

friends: { @"Andy",@"Anand",@"Bob",@"Cat" };

我有另一个NSMutableArray,用于保存用户朋友的匹配年龄,这是用户从未看到的内容,但在用户选择好友的名字后会传递给上一个视图控制器。这个年龄数组类似于:

friendsAges: {@"25",@"23",@"30",@"22"};

我的问题是,如果我将searchBar添加到朋友姓名的UITableview,如何确保将相应的年龄对象发送回上一个视图控制器(如果用户)从过滤后的数组searchResultsTableView

中选择一个名称

例如,如果没有searchBar,则选择“Bob”也会向前一个控制器发送“30”。但是如果用户键入“bo”并且只有Bob显示在过滤的searchResultsTableView中,那么年龄“25”将被发送到前一个控制器b / c它是第一个索引。

这是我的错误代码:

if (tableView == self.searchDisplayController.searchResultsTableView) {

    NSString *theFriend = [_filteredFriendArray objectAtIndex:indexPath.row];

    // not sure what I should use instead for the _filteredFriendArray below
    NSString *theFriendAge = [_filteredFriendArray objectAtIndex:indexPath.row];

    [self.delegate friendPickerViewController:self
                              didSelectFriend:theFriend
                    didSelectFriendAge:theFriendAge];

} else { //if not using search bar and seeing filtered search results
    NSString *theFriend = [friends objectAtIndex:indexPath.row];
    NSString *theFriendAge = [friendsAge objectAtIndex:indexPath.row];

    [self.delegate friendPickerViewController:self
                              didSelectFriend:theFriend
                    didSelectFriendAge:theFriendAge];
}

我觉得使用NSDictionary可能更容易,而不是尝试将过滤后的搜索视图的索引与主数组匹配,但我不确定如何做到最好。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你是对的,使用NSDictionary更容易。每个人都可以用NSDictionary代表,如@ {@“name”:@“Stephen Hawking”,@“age”:70}。使用[personDict objectForKey:@“name”]填充您的朋友表视图,并在选择时获取[person objectForKey:@“age”]的值,并将其传递回上一个视图控制器。