2017-02-18 96 views
5

對不起,如果這是重複的,但我試着搜索包括蘋果的String Format SpecifiersIEEE printf spec,但找不到這個簡單的答案。在Swift中字符串常量的字符串格式化程序?

我想打印os_log字符串常量的字符串格式的消息。一些類似於:

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

然而,當我試圖像這樣在斯威夫特:

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

它只是打印無中生有的。

如何使用字符串格式說明符打印字符串常量?我不知道如何處理NSLog

編輯:os_log要求StaticString,所以它不能像"Something \(Expr) Something else"print()一樣。您仍然可以使用字符串格式來打印數字變量。我想知道如何在這種情況下打印字符串常量/變量。

編輯2:蘋果實際上在其manual page上對此主題進行了討論,我錯過了它,因爲目前只在Objective-C API版本中討論過。

+0

「something \\(any swift expression)something else」 –

回答

5

os_log手冊頁:

您也可以使用「%@」格式說明用的OBJ-C使用/ CF /斯威夫特對象

在你的情況

import os.log 

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

工作,因爲Swift字符串在 可變參數列表中橋接到NSString

+0

完美!謝謝! – HuaTham

-2

這將工作:

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

所以,你把你要打印readingin參數。

(如果這個解決您的問題,請把它標記爲答案)

+0

我正在尋找'os_log'的一個答案,它需要'StaticString'的字符串格式說明符來輸出一個變量的值。 – HuaTham