在调试过程中,我经常发现打印出一个变量的名称很有用。所以对于一个变量var foo = 5
, print("foo: \(foo)")
其中打印 foo: 5
.
我想写一个扩展(或其他方式),这样我就可以说 print(foo.described())
并得到同样的结果。
我最接近的尝试是这样的
extension NSObject {
func described() -> String {
return "\(???): \(self)"
}
}
但要想得到变量的实际名称,并不直接。非常感谢任何帮助
将你的函数改为 镜子 对象
extension NSObject {
func described() -> String {
return "\(Mirror(reflecting: self).superclassMirror): \(self)"
}
}
如果你想访问对象内部的变量,你也可以通过使用 .children
与 .subjectType
.
扩展的结果打印
MyClass: <_TtCC6legoid20MainTabBarController7MyClass: 0x6000005b0ca0>