只能打印对象的内存地址

问题描述 投票:0回答:2

我正在使用 Yelp API 并拉取 YLPBusiness。当我尝试

print()
dump()
YLPBusiness
时,我只在控制台日志中收到内存地址。

如果我

print(YLPBusiness.name)
,我会收到这个名字。如何完整打印出
YLPBusiness
对象的所有属性值?

Screen shot of code and console log

ios swift rest yelp
2个回答
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 运行时看到的有效行为之间的差异。


3
投票

当你打印一个对象时,你实际上是在调用该对象的

description
方法。 看来
YLPBusiness
类没有实现这个方法。 您可以创建
YLPBusiness
的扩展来实现
description
方法。

© www.soinside.com 2019 - 2024. All rights reserved.