以下行是导致错误的原因:
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文件中。
答案 0 :(得分:0)
我不明白为什么我收到此错误,因为每个事件都有一个title属性
是的,但self.events[0]
不是一个事件 - 至少,不是编译器所知道的。订阅数组会产生id
,id
没有属性。而且你已经给了可怜的旧编译器了。如果这是DPCalendarEvent,则将其强制转换为DPCalendarEvent:
NSLog(@"Title: %@", ((DPCalendarEvent*)self.events[0]).title);
或者,使用Objective-C的新轻量级泛型表示法来说明events
是一个数组。