Swift - 只能打印对象的内存地址
Swift - can only print object's memory address
我正在使用 Yelp API 并取消 YLPBusiness。当我尝试 print() 或 dump() YLPBusiness 时,我只在控制台日志中收到内存地址。
但是,如果我打印 (YLPBusiness.name),我将收到该名称。如何完全打印出 YLPBusiness 对象的所有 属性 值?
当您打印一个对象时,您实际上是在调用该对象的 description
方法。 YLPBusiness
class 好像没有实现这个方法。您可以创建 YLPBusiness
的扩展,实现 description
方法。
您应该覆盖您的 class 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 运行时看到的有效行为之间的差异。
我正在使用 Yelp API 并取消 YLPBusiness。当我尝试 print() 或 dump() YLPBusiness 时,我只在控制台日志中收到内存地址。
但是,如果我打印 (YLPBusiness.name),我将收到该名称。如何完全打印出 YLPBusiness 对象的所有 属性 值?
当您打印一个对象时,您实际上是在调用该对象的 description
方法。 YLPBusiness
class 好像没有实现这个方法。您可以创建 YLPBusiness
的扩展,实现 description
方法。
您应该覆盖您的 class 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 运行时看到的有效行为之间的差异。