我已经看完了WWDC 2020,并认为我会切换我的代码以使用新的Logger语法。
我经常想打印可选变量的值,我可以用简单的打印命令来完成。如果我用新的Logger命令来尝试这个操作,我会得到一个“无法将'String?'类型的值转换为预期的参数类型'NSObject'”错误。建议用Logger来完成这个操作的方法是什么?
import os
let logger = Logger(subsystem: "com.example.Fruta", category: "giftcards")
let myOptional: String?
logger.log ("MyOptional is \(myOptional)")
3条答案
按热度按时间2vuwiymt1#
编译器错误(有些模糊)的原因是
Logger
要求插入的类型符合CustomStringConvertible
协议,而Optional
* 不是 * 这种情况。根据所需的输出,您可以显式地将可选转换为字符串:
它会产生类似于
或使用nil-coalescing提供默认值:
它会产生类似于
xcitsw882#
我会直接在日志调用中处理它
或许更清楚
mm5n2pyu3#
可选地(:D),只需为
Optional
类型编写一个扩展名,以实现CustomStringConvertible
一致性: