Mar*_*eon 72 string tostring ios swift customstringconvertible
什么是Swift等效的Java toString()来打印类实例的状态?
vac*_*ama 96
该description物业是您正在寻找的.这是打印包含对象的变量时访问的属性.
您可以description通过采用协议CustomStringConvertible然后实现description属性来添加到您自己的类中.
class MyClass: CustomStringConvertible {
    var val = 17
    public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj)  // "MyClass: 12"
description在调用String构造函数时也使用它:
let str = String(myobj)  // str == "MyClass: 12"
这是访问实例描述的推荐方法(相反,myobj.description如果类没有实现,则不起作用CustomStringConvertible)
如果可以使用struct而不是class,那么没有别的办法.
struct只是将自身打印到输出中
print("\(yourStructInstance)")
或者像这样的类:
print(String(describing: yourClassInstance))
你应该用String(obj).
直接来自CustomStringConvertible的文档:
注意
String(instance)将适用于任何类型的实例,如果实例恰好是CustomStringConvertible,则返回其描述.因此,不鼓励使用CustomStringConvertible作为通用约束或直接访问符合类型的描述.
NSObject扩展类是如何完成的如果您的模型类是从 扩展的NSObject,则必须description按如下方式覆盖变量:
public override var description: String {
    return "\n{\n index: \(self.index),\n"
        + " country: \(self.name),\n"
        + " isoCountryCode: \(self.isoCountryCode),\n"
        + " localeId: \(self.localeId),\n"
        + " flagImageName: \(self.flagImageName!)\n}"
}
您可以在“CountryPicker iOS Swift 库”中的Country课程中查看我是如何做到的。
或者,为了让您更容易理解,您的类和description方法应如下所示:
public class MyClass: NSObject {
   public var memberAttribute = "I'm an attribute"
   public override var description: String {
       return "My Class member: \(self.memberAttribute)"
   }
}
注意:
由于您要从中扩展 Modal 类,NSObject因此您的类不再需要遵守CustomStringConvertible类,并且您正在覆盖类本身的description变量NSObject。永远记住,CustomStringConvertible主要是实现这一点的纯 Swift 方式。
| 归档时间: | 
 | 
| 查看次数: | 28083 次 | 
| 最近记录: |