1

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

现在,我有一个UITableView按字母顺序显示NSMutableArray用户朋友姓名的方法,例如:

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

我有另一个NSMutableArray保存用户朋友的匹配年龄,用户从未见过但在用户选择朋友的名字后传递给前一个视图控制器的东西。这个年龄数组类似于:

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

我的问题是,如果我在朋友的名字中添加了一个searchBarUITableview如果用户从过滤后的数组中选择一个名字,我如何确保将相应的年龄对象发送回前一个视图控制器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 可能更容易,而不是尝试将过滤后的搜索视图的索引匹配回主数组,但我不确定如何最好地做到这一点。

任何帮助,将不胜感激!

4

1 回答 1

0

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

于 2012-11-14T05:36:22.357 回答