错误:无法将类型“ String.Type”的值转换为预期的字典键类型“ String”

时间:2018-09-21 06:11:52

标签: ios swift dictionary

以下是我的代码,在代码的最后一行中,出现标题中提到的错误。我该怎么办?

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)!])

3 个答案:

答案 0 :(得分:0)

此行中的错误:

  

User.saveUser(userData:[String:(jsonString)!])

在这里,您提供了dictionary key = StringString是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代替NSStringString可以使用相同的方法)并安全地解开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])
}