Ошибка: невозможно преобразовать значение типа 'String.Type' в ожидаемый тип ключа словаря 'String' - PullRequest
0 голосов
/ 21 сентября 2018

Ниже приведен мой код, где в последней строке кода я получаю сообщение об ошибке, как указано в заголовке.что я должен делать ??

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 голосов
/ 21 сентября 2018

Ошибка довольно очевидна.Вы используете Swift Тип String вместо экземпляра из String для хранения вашего значения jsonString.

Вы должны использовать String ключ, который вы будете использовать позже для получения значения.

if let jsonString = String(data: jsonData, encoding: .utf8) {
    User.saveUser(userData: ["jsonString": jsonString])
}

Примечание: Используйте String вместо NSString в Swift (тот же метод доступен для String) и безопасно распакуйте ваш jsonString.

0 голосов
/ 21 сентября 2018

String - это тип Struct в swift, который используется в последней строке,

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])
}
0 голосов
/ 21 сентября 2018

Ошибка в этой строке:

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

Здесь вы указали dictionary key = String, String - это тип в Swift, его нельзя использовать в качестве ключа для словаря.Вам необходимо указать значение типа String, а не String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...