3 votes

Swift - peut seulement imprimer l'adresse mémoire de l'objet.

J'utilise l'API Yelp et je récupère un YLPBusiness. Lorsque je tente d'imprimer() ou de vider() le YLPBusiness, je ne reçois que l'adresse mémoire dans le journal de la console.

Cependant, si j'imprime(YLPBusiness.name), je recevrai le nom. Comment puis-je imprimer toutes les valeurs des propriétés de l'objet YLPBusiness ?

Screen shot of code and console log

7voto

KlimczakM Points 6093

Vous devez surcharger votre classe description propriété :

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

où vous imprimez toutes les propriétés de YLPBusiness comme vous le souhaitez.

Vous pouvez résoudre votre problème mentionné dans les commentaires en transformant votre méthode en propriété :

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

Cela s'est produit parce que Swift a détecté des divergences entre la surcharge et la surcharge dans le système de types Swift et le comportement effectif vu via le runtime Objective-C.

3voto

Paulw11 Points 11557

Lorsque vous imprimez un objet, vous invoquez en fait l'objet description méthode. Il semble que la YLPBusiness ne met pas en œuvre cette méthode. Vous pouvez créer une extension de YLPBusiness qui a mis en œuvre le description méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X