objectAtIndex未在segue中传递选定的行

时间:2014-07-07 04:41:27

标签: arrays uitableview dictionary uiviewcontroller segue

我希望将所选行的数据传递给带有segue的第二个viewcontroller。填充第一个viewcontroller tableview的结果是一个数组。在segue我使用:

if ([[segue identifier] isEqualToString:@"detailSegue"]) {
    //
    DetailVC *dvc = (DetailVC *)[segue destinationViewController];

    NSIndexPath *indexPath = [self.resultsVC indexPathForSelectedRow];
    Car *selectedCar = (Car *) [self.results objectAtIndex:indexPath.row];
    dvc.currentCar = selectedCar;

当我执行segue时,我收到错误:

[NSKnownKeysDictionary1 carName]: unrecognized selector sent to instance

从我在这个主题上所做的研究中,我确实包含了与该行类似的内容:

[fetchRequest setResultType:NSDictionaryResultType]

删除时帮助了其他人。我需要为我的代码保留它。 如何将所选行的数据传递给第二个viewcontroller?

更新8月7日

用于构造数组的代码来自fetchrequest。数组行当前显示一个整数和carName。

NSArray* results = [context executeFetchRequest:r error:&error];
NSSortDescriptor* sd = [NSSortDescriptor sortDescriptorWithKey:@"number" ascending:NO];

results = [results sortedArrayUsingDescriptors:@[sd]];
self.results = results;

问题是我指向segue搜索Car *而不是此数组输出?

更新12JULY

根据Aubada Taljo的建议,我删除了Car *的引用并将以下内容添加到segue:

dvc.selectedCar = [self.results objectAtIndex:indexPath.row];

并在我的detailVC中声明了NSDictionary。

1 个答案:

答案 0 :(得分:1)

如果你确定问题在这里,那么你确定self.results包含Car *类型的对象吗?

我建议你检查变量观察器它包含Car *类型的对象,因为它似乎是从另一种类型的对象请求属性carName。