2016-03-12 11 views
1

Я новичок в Swift, и я исхожу из Android-фона.Строка формата в Swift работает неправильно

Я хочу форматировать строку.

Мой код выглядит следующим образом:

let PARAM = "{\"title\": \"%a\", \"name\": \"%a\", \"message\": \"%a\", \"email\": \"%a\"}" 

и

let parameter = String.localizedStringWithFormat(POST_CONTACT_US_PARAM, "title", "name","message", "email"); 

Результат является:

{ "Название": "0x0p + 0", "имя": «0x0p + 0», «message»: «0x0p + 0», «email»: «0x0p + 0»}

Может ли кто-нибудь сказать мне, в чем проблема?

+0

@Thomasa Спасибо за вашу помощь –

ответ

3

Вы должны использовать %@ вместо %a в качестве заполнителя для текста.

Кроме того, я предлагаю использовать новую строку инициализатор для решения этой задачи, как это:

let PARAM = "{\"title\": \"%@\", \"name\": \"%@\", \"message\": \"%@\", \"email\": \"%@\"}" 

let parameter = String(format: PARAM, locale: NSLocale.currentLocale(), "title", "name","message", "email") 

print(parameter) 

Результат:

{ "название": "название", "имя": «имя »,« сообщение »:« сообщение »,« электронная почта »:« электронная почта »}

1

Из documentation, %a используется формат:

64-битное число с плавающей точкой (двойной), печатается в экспоненциальной форме с ведущим 0x и одной шестнадцатеричной цифрой перед десятичной точкой, используя нижний регистр p, чтобы ввести показатель степени.

В большинстве случаев вы должны использовать %@ в качестве спецификатора вашего формата (кроме типов, которые не являются классами/структурами).

Поэтому правильное определение PARAM становится

let PARAM = "{\"title\": \"%@\", \"name\": \"%@\", \"message\": \"%@\", \"email\": \"%@\"}" 
Смежные вопросы