2016-06-24 12 views
3

Ich benutze die Yelp API und ziehe ein YLPBusiness herunter. Wenn ich versuche, das YLPBusiness zu drucken() oder zu verwerfen(), erhalte ich nur die Speicheradresse im Konsolenprotokoll.Swift - kann nur die Speicheradresse des Objekts drucken

Wenn ich (YLPBusiness.name) jedoch drucke, erhalte ich den Namen. Wie kann ich alle Eigenschaftswerte des YLPBusiness-Objekts vollständig ausdrucken?

Screen shot of code and console log

Antwort

7

Sie sollten Ihre Klasse description Eigenschaft außer Kraft setzen.

Sie können Ihr Problem in den Kommentaren, indem Sie Ihre Methode in Eigentum erwähnt beheben:

public override var description: String { 
    return "Business name: \(self.name), address: \(self.address), etc." 
} 

Es geschah, weil Swift Diskrepanzen zwischen Überlastung und Überschreiben im Swift Typ-System und dem effektiven Verhalten über die objektiv-gesehen erkennt C Laufzeit.

+0

Das wird es lösen! Vielen Dank. Du und Paulw11 haben hier beide die richtigen Ideen. Vielen Dank! –

+0

Mein Vergnügen zu helfen. Überlegen Sie, eine Antwort zu akzeptieren, wenn es Ihnen passt. – KlimczakM

+0

Der einzige Trick, den ich habe, ist, dass die YelpAPI in Objective-C immer noch so ist, wenn ich YLPBusiness ableiten und versuchen, die description() func zu ändern ... Ich erhalte den Fehler "Method 'description()" mit Objective- C-Selektor 'description' steht in Konflikt mit Getter für 'description' aus der Oberklasse 'NSObject' mit dem Selektiven-Selektor C " –

3

Wenn Sie ein Objekt drucken Sie den Aufruf tatsächlich das description Methode des Objekts. Es scheint, dass die Klasse YLPBusiness diese Methode nicht implementiert. Sie könnten eine Erweiterung zu YLPBusiness erstellen, die die description-Methode implementiert.

func description() -> String { 
    return "Business name: \(self.name), address: \(self.address), etc." 
} 

, wo Sie alle Eigenschaften von YLPBusiness drucken, wie Sie es wünschen:

+0

Sinn macht. Danke für die Abklärung! –