Swift中的格式字符串无法正常工作

时间:2016-03-12 14:37:35

标签: string swift

我是Swift的新手,我来自Android背景。

我想格式化一个字符串。

我的代码如下:

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

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

结果是:

  

{“title”:“0x0p + 0”,“name”:“0x0p + 0”,“message”:“0x0p + 0”,“email”:“0x0p + 0”}

任何人都可以告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:3)

您应该使用%@代替%a作为文字的占位符。

另外,我建议为此任务使用新的String初始化程序,如下所示:

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

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

print(parameter)

结果:

  

{“title”:“title”,“name”:“name”,“message”:“message”,“email”:“email”}

答案 1 :(得分:1)

documentation开始,%a用于格式化:

  

64位浮点数(双精度数),用科学计数法打印,前导0x和小数点前一位十六进制数字,用小写p表示引用指数。

大多数情况下,您需要使用%@作为格式说明符(非类/结构的类型除外)。

因此PARAM的正确定义变为

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