NSInvalidArgumentException - 'Недопустимый тип верхнего уровня в записи JSON' - Swift
Как упоминалось в заголовке сообщения, я получаю NSInvalidArgumentException - "Недопустимый тип верхнего уровня при записи JSON" при попытке преобразовать словарь в данные JSON в swift
let userInfo: [String: String] = [
"user_name" : username!,
"password" : password!,
"device_id" : DEVICE_ID!,
"os_version" : OS_VERSION
]
let inputData = jsonEncode(object: userInfo)
,,,
static private func jsonEncode(object:Any?) -> Data?
{
do{
if let encoded = try JSONSerialization.data(withJSONObject: object, options:[]) as Data? <- here occured NSInvalidArgumentException
if(encoded != nil)
{
return encoded
}
else
{
return nil
}
}
catch
{
return nil
}
}
Я передаю словарь в качестве параметра, не понимаю, что происходит не так. Пожалуйста, помогите мне, ребята.
Спасибо!
1 ответ
Решение
Обратите внимание, что вам не нужны все эти вещи, ваша функция может быть такой простой, как:
func jsonEncode(object: Any) -> Data? {
return try? JSONSerialization.data(withJSONObject: object, options:[])
}
Если вам действительно нужно передать Optional, то вам нужно развернуть его:
func jsonEncode(object: Any?) -> Data? {
if let object = object {
return try? JSONSerialization.data(withJSONObject: object, options:[])
}
return nil
}