Swift 中字符串常量的字符串格式化程序?

String Formatter for string constants in Swift?

抱歉,如果这是重复的,但我尝试四处搜索,包括 Apple 的 String Format Specifiers, and IEEE 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 版本中讨论.

这将起作用:

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

所以你把你要打印的参数读进去了

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

来自 os_log 手册页:

You may also use the "%@" format specifier for use with Obj-C/CF/Swift objects

你的情况

import os.log

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

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