2016-04-16 6 views
0

Die folgende Zeile ist es, was den Fehler verursacht:Property ‚title‘ nicht auf Objekt vom Typ ‚id‘ gefunden

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

ich die Array-Ereignisse früher in der Datei deklarierte, und ich wollte aus der Veranstaltung drucken Titel, um etwas zu debuggen. Ich erhalte jedoch einen Fehler. Ich verstehe nicht, warum ich diesen Fehler bekomme, weil jedes Ereignis eine Titeleigenschaft hat, wie in der folgenden Funktion gezeigt.

@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) 
} 

konnte ich früher Ereignisse [0] .title in der obigen Funktion verwenden, wenn ich eine NSLog-Anweisung in der Funktion enthalten. Irgendeine Idee, was den Fehler verursacht? Ich dachte, dass der Fehler ist, dass die zwei Arrays nicht das gleiche Array sind, aber ich bin mir nicht sicher, wie man das Array von beiden Dateien zugänglich macht. Hinweis: Die erste Codezeile befindet sich in einer Objective-C-Datei und der zweite Codeblock befindet sich in einer Swift-Datei.

Antwort

0

I do not understand why I am getting this error because each event has a title property

Ja, aber self.events[0] ist nicht ein Ereignis - zumindest nicht so weit wie der Compiler weiß. Das Subskribieren eines Arrays ergibt id, und ein id hat keine Eigenschaften. Und Sie haben dem armen alten Compiler nichts weiter gegeben. Wenn diese Sache ein DPCalendarEvent ist, muss er in einem DPCalendarEvent:

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

Alternativ verwenden Objective-C Der neue leichte Generika Notation zu sagen, was events ist ein Array aus.

Verwandte Themen