搜索数组以查找与 ObjectA.property 匹配的 ObjectB.property



我有 2 个填充对象的数组,两个对象具有相同的属性 teamID,每次点击屏幕时,都会激活来自 TeamObject 的对象,我需要在 ExtraTeamInfoObject 中搜索匹配的 teamID:

这是我到目前为止得到的,但没有工作:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier] isEqualToString:@"teamDetailsSeg"]){
        TeamDetailsTableViewController *detailViewController = [segue destinationViewController];
        NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];
        long row = [myIndexPath row];
        TeamObject *item = [tableData objectAtIndex:row];
    ExtraTeamInfoObject *item2 = _allInfo[row];
    ExtraTeamInfoObject *searchingObject;
    for (int i = 0; i < _allInfo.count && searchingObject; i++){
        for (ExtraTeamInfoObject *co in _allInfo[i]) {
            if (co.teamID == item.teamID) {
                searchingObject = item2;
                break;
                }
                }
                }

        detailViewController.teamDetailModel = item2;
        NSLog(@" Object %@", item.teamID);
        NSLog(@" Extra  %@", item2.teamID);
        }
}

不知何故,这并没有使我的应用程序崩溃并且它可以工作,但是查看底部的 2 个 NSLog 打印,结果是:

2014-02-12 10:51:26.255 对象 5312014-02-12 10:51:26.255 额外 539

这意味着它根本没有搜索正确的对象。有人知道解决这个问题吗?谢谢。

与其for循环,我更喜欢使用 NSPredicate,这要归功于 KVC 的优点:

ExtraTeamInfoObject *searchingObject;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"teamID == %@", item.teamID];
NSArray *result = [_allInfo filteredArrayUsingPredicate:predicate];
if (results.count) {
    searchingObject = [results firstObject];
}

当您执行以下操作时,看起来好像在枚举单个对象:

for (ExtraTeamInfoObject *co in _allInfo[i])

不应该是:

for (ExtraTeamInfoObject *co in _allInfo)

相关内容

  • 没有找到相关文章

最新更新