错误:在'id'类型的对象上找不到属性'data'

时间:2013-09-27 21:48:16

标签: ios properties object-type

我在方法titleFieldValueChanged中收到此错误,当用户更改文本字段的值以更新数据模型时,会调用该方法。

在DetailViewController.m中:

- (IBAction)titleFieldTextChanged:(id)sender
{ 
    self.detailItem.data.title = self.titleField.text;
}

我知道我必须用括号表示法写这个,对吗?但我无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:0)

括号表示法如下所示:

[[[self detailItem] data] setTitle:[[self titleField] text]];

但实际错误听起来更像是类型错误。要么detailItem的类型实际上没有数据属性,要么显然没有类型的detailItem类型。

答案 1 :(得分:0)

查看你的代码,在你发现之前(我稍微改了一下 - 做同样的事情)。当您尝试从主设备切换到详细信息时,您发送的代码会崩溃。这些是我发现的更大问题。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        DetailViewController *dvc = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSDate *object = _exercises[indexPath.row];
        dvc.detailItem = object;
    }
}

// in detail view
@property (strong, nonatomic) NSDate *detailItem;

您传递给详细视图控制器的“对象”是NSDate对象。

您无法为NSDate对象设置标题。

执行

时也遇到问题
[[self detailItem] setFullImage:fullImage];
[[self detailItem] setThumbImage:thumbImage];

再次尝试将图像设置为NSDate对象。

我建议您按照本教程进行操作,它会显示您正在尝试制作的一个很好的示例,正​​如您提到的,您是初学者。

iOS Tutorial: How To Create A Simple iPhone App