【问题标题】:String Formatter for string constants in Swift?Swift中字符串常量的字符串格式化程序?
【发布时间】:2017-07-07 23:50:38
【问题描述】:

抱歉,如果这是重复的,但我尝试搜索包括 Apple 的 String Format SpecifiersIEEE printf spec,但找不到这么简单的答案。

我想用字符串格式化程序打印 os_log 消息以获取字符串常量。类似于:

printf("Currently at processing state: %s\n", "reading in");

在 C 中。但是,当我在 Swift 中尝试这样的事情时:

os_log("Currently at processing state: %s", log: .default, type: .info, "reading in")

它根本什么也没打印出来。

如何使用字符串格式说明符打印字符串常量?我也不确定如何使用NSLog

编辑:os_log 需要StaticString,所以它不能像print() 那样做类似"Something \(Expr) Something else" 的事情。您仍然可以使用字符串格式来打印数字变量。我想知道在这种情况下如何打印字符串常量/变量。

编辑 2:Apple 实际上在其 manual page 上就该主题进行了讨论,我设法错过了它,因为它目前仅在 Objective-C API 版本中进行了讨论。

【问题讨论】:

  • “某事\(任何快速表达)某事”

标签: swift string logging constants format-specifiers


【解决方案1】:

这将起作用:

print("Currently at processing state: \(readingin)")

所以你把你要打印的参数输入进去。

(如果这解决了您的问题,请将其标记为答案)

【讨论】:

  • 我正在寻找os_log 的答案,它需要StaticString 的字符串格式说明符才能打印出变量的值。
【解决方案2】:

来自os_log 手册页:

您也可以将“%@”格式说明符用于 Obj-C/CF/Swift 对象

你的情况

import os.log

os_log("Currently at processing state: %@", log: .default, type: .info, "reading in")

有效,因为 Swift 字符串被桥接到 NSString 上 变量参数列表。

【讨论】:

  • 完美!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多