我有 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)