使用CustomStringConvertible
orCustomDebugStringConvertible
是在字符串到达 之前发生的事情XCGLogger
。字符串插值将使用 的description
属性CustomStringConvertible
而不是 的debugDescription
属性CustomDebugStringConvertible
。debugDescription
仅在将符合的对象CustomDebugStringConvertible
传递给debugPrint()
方法方向时使用,而不是在引号内。
例如:
struct Sample: CustomStringConvertible, CustomDebugStringConvertible {
var description: String { return "description" }
var debugDescription: String { return "debugDescription" }
}
let sample = Sample()
print("\(sample)") // description
debugPrint("\(sample)") // "description"
print(sample) // description
debugPrint(sample) // debugDescription
一个可能的解决方案是添加-DDEBUG
到您的Other Swift Flags
(如果还没有的话),并将您的description
属性更改为如下所示:
var description: String {
#if DEBUG
return debugDescription
#else
return "description"
#endif
}
然后对于调试版本,您将获得debugDescription
字符串插值中使用的值,但在您的生产版本中,您将获得正常的description
.