2017-02-18 20 views
5

Извините, если это дубликат, но я пробовал искать, включая Apple, String Format Specifiers и IEEE printf spec, но не смог найти ответ на что-то такое простое.String Formatter для строковых констант в Swift?

Я хотел бы напечатать сообщение 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 фактически имеет дискуссию по этой теме прямо на своем manual page, который мне удалось пропустить, потому что она обсуждается только в версии Objective-C API.

+0

"что-то \\ (любое быстрое выражение) что-то еще" –

ответ

5

На странице os_log людей:

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

В вашем случае

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

 Смежные вопросы

  • Нет связанных вопросов^_^