You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OSLogMessage中使用字符串?XCode类型转换报错咨询

问题原因

第一行代码里的"Device found:"是字符串字面量,Swift会自动通过ExpressibleByStringLiteral协议将其转换为OSLogMessage类型,匹配logger.info(_:)的参数要求。

而第二行的String(describing: device)是一个已初始化的String实例,Swift不会自动将String实例转为OSLogMessage,所以触发类型不匹配的报错。

最优解决方案

不需要额外的冗余包装,直接利用OSLogMessage的插值语法传递对象即可:

logger.info("\(device)")

如果需要和String(describing:)完全一致的调试描述效果,也可以直接写:

logger.info("\(String(describing: device))")

另外,也可以采用OSLog传统的格式化占位符写法,更符合原生日志API的使用习惯:

logger.info("%@", device)

这里的%@是Swift/Objective-C日志通用的对象占位符,OSLog会自动处理对象的描述输出。

内容的提问来源于stack exchange,提问作者Stephan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:30:49