String Formatter для строковых констант в Swift?

Извините, если это дубликат, но я пытался искать, включая Apple Спецификаторы строкового формата и спецификация IEEE printf но не смог найти ответ на что-то такое простое.

Я хотел бы напечатать сообщение 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, поэтому он не может делать что-то вроде "Something \(Expr) Something else", как в print(). Вы по-прежнему можете использовать форматирование строк для печати числовых переменных. Мне интересно, как в этом случае печатать строковые константы/переменные.

Редактировать 2: Apple действительно обсуждает эту тему прямо на своей странице руководства. , который я умудрился пропустить, потому что пока он обсуждается только в версии Objective-C API.


person HuaTham    schedule 18.02.2017    source источник
comment
что-то \(любое быстрое выражение) что-то еще   -  person Jean-Baptiste Yunès    schedule 18.02.2017


Ответы (2)


На справочной странице os_log:

Вы также можете использовать спецификатор формата "%@" для использования с объектами Obj-C/CF/Swift.

В твоем случае

import os.log

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

работает, потому что строка Swift связана с NSString в списке переменных аргументов.

person Martin R    schedule 18.02.2017
comment
Идеальный! Благодарю вас! - person HuaTham; 18.02.2017

Это будет работать:

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

Итак, вы помещаете параметр, который хотите распечатать для чтения.

(Если это решило ваш вопрос, отметьте его как ответ)

person Matthijs Otterloo    schedule 18.02.2017
comment
Я ищу ответ для os_log, который требует спецификаторов строкового формата для StaticString, чтобы распечатать значение переменной. - person HuaTham; 18.02.2017