以下是我的代码,在代码的最后一行中,出现标题中提到的错误。我该怎么办?
let jsonObject: [Any] = [
[
"userName": "meUser",
"emailID": "meUser@gmail.com",
"phoneNumber": "7290407896",
"fiatCurrency": ["currencyCode" : "INR"],
"countryCode": "IND",
]
]
let jsonData = try! JSONSerialization.data(withJSONObject: jsonObject, options: JSONSerialization.WritingOptions.prettyPrinted)
let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String
print(jsonString)
User.saveUser(userData: [String: (jsonString)!])
答案 0 :(得分:0)
此行中的错误:
User.saveUser(userData:[String:(jsonString)!])
在这里,您提供了dictionary key = String
,String
是Swift中的一种类型,您不能将其用作字典的键。您需要提供本身为String
类型而不是String
的值。
答案 1 :(得分:0)
错误非常明显。您正在使用Swift 类型 String
(而不是String
的实例)来存储值jsonString
。
您应该使用一个String
键,以后将用它来检索您的值。
if let jsonString = String(data: jsonData, encoding: .utf8) {
User.saveUser(userData: ["jsonString": jsonString])
}
注意:在Swift中使用String
代替NSString
(String
可以使用相同的方法)并安全地解开jsonString
。
答案 2 :(得分:0)
String
是快速输入的 Struct (结构),
User.saveUser(userData: [String: (jsonString)!])
使用一些字符串对象而不是类名。如:
User.saveUser(userData: ["your_key_name": (jsonString)!])
您可以将代码更新为:
let jsonData = try? JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
if let json = jsonData, let jsonString = String(data: json, encoding: .utf8) {
print(jsonString)
User.saveUser(userData: ["key_name": jsonString])
}