我是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”}
任何人都可以告诉我这是什么问题吗?
答案 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\": \"%@\"}"