Swift - 只能打印对象的内存地址

时间:2016-06-24 06:22:07

标签: ios swift api rest yelp

我正在使用Yelp API并提取YLPBusiness。当我尝试print()或dump()YLPBusiness时,我只收到控制台日志中的内存地址。

如果我打印(YLPBusiness.name),我将收到该名称。如何完全打印出YLPBusiness对象的所有属性值?

Screen shot of code and console log

2 个答案:

答案 0 :(得分:7)

您应该覆盖您的班级description属性:

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

您可以根据需要打印YLPBusiness的所有属性。

您可以通过将方法转换为属性来解决注释中提到的问题:

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

之所以发生这种情况,是因为Swift检测到Swift类型系统中的重载和覆盖之间存在差异,以及通过Objective-C运行时看到的有效行为。

答案 1 :(得分:3)

当您打印对象时,实际上是在调用对象的description方法。似乎YLPBusiness类没有实现此方法。您可以创建实施YLPBusiness方法的description扩展程序。