在'id'类型的对象上找不到属性'title'

时间:2016-04-16 04:20:38

标签: objective-c arrays xcode swift

以下行是导致错误的原因:

NSLog(@"Title: %@", self.events[0].title);

我在文件的前面声明了数组事件,我想打印出事件标题以进行一些调试。但是,我收到一个错误。我不明白为什么我收到此错误,因为每个事件都有一个title属性,如下面的函数所示。

@IBAction func addMedicine(sender: AnyObject) {
    objectC!.events = NSMutableArray()
    let event: DPCalendarEvent = DPCalendarEvent(title: nameText.text, startTime: startDatePicker.date, endTime: startDatePicker.date, colorIndex: 1)
    objectC!.events.addObject(event)
}

当我在函数中包含NSLog语句时,我能够在之前的函数中使用事件[0] .title。知道造成错误的原因是什么吗?我在想错误是两个数组不是同一个数组,但我不知道如何从两个文件中访问数组。 注意:第一行代码位于Objective-C文件中,第二行代码位于Swift文件中。

1 个答案:

答案 0 :(得分:0)

  

我不明白为什么我收到此错误,因为每个事件都有一个title属性

是的,但self.events[0] 是一个事件 - 至少,不是编译器所知道的。订阅数组会产生idid没有属性。而且你已经给了可怜的旧编译器了。如果这是DPCalendarEvent,则将其强制转换为DPCalendarEvent:

NSLog(@"Title: %@", ((DPCalendarEvent*)self.events[0]).title);

或者,使用Objective-C的新轻量级泛型表示法来说明events是一个数组。