-1

我尝试使用带有表格视图的情节提要,该表格视图与控制器视图相结合,应该向我展示图片。问题是当我按下任何“单元格”时,应用程序会崩溃。

这是问题代码:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([[segue identifier] isEqualToString:@"ShowPhoto"])
    {
        DetailsViewController *dvc = [segue 
        destinationViewController];
        NSIndexPath *path = [[self tableView] indexPathsForSelectedRows];
        Photo *pic = [photosArray objectAtIndex:[path row]];

        [dvc setCureentPic: pic];
    }
}

问题是 NSIndexPath 的问题...我认为原因是我尝试将数组插入 NSIndex。xcode 警告:不兼容的指针类型使用“NSArray”类型的表达式初始化“NSIndexPath *__strong”。

粉碎消息:无法识别的选择器发送到实例 [__NSArrayI 行]。我该如何解决这个问题?

4

1 回答 1

6

请务必阅读您调用的方法的文档此处) ,而不是对它们的作用做出假设......

[[self tableView] indexPathsForSelectedRows]

返回 anNSArray不是an NSIndexPath(顺便说一句,即使不阅读文档,您也可以知道这一点- 在 Cocoa 命名约定中,如果某物是复数形式,则它接受或返回 an NSArray),因此向其发送消息NSIndexPath会崩溃。写

NSIndexPath *path = [[[self tableView] indexPathsForSelectedRows] objectAtIndex:0];

相反,它将起作用(如果至少有一个选定的行 - 如果没有,您必须检查数组是否为空,否则它将再次崩溃......)

顺便说一句,编译器甚至会警告您问题出在哪里……请在尝试编程之前尝试培养一些常识,因为如果不这样做,您将在自己和他人的脚下开枪。

于 2012-11-01T07:13:27.233 回答