загрузите изображение и сохраните его в формате json с помощью SwiftyJSON - PullRequest
0 голосов
/ 07 июня 2018

У меня есть json в формате ниже, который я получаю с сервера и анализирую с помощью SwiftyJSON.

{
name: "Ganesh"
imageURL:"www.abc.com/image.png"
}

Я загружаю изображение, используя следующий код:

do{
     let myData = try Data(contentsOf: url)
}catch{
     Print("error")
}

Примечание: "url"содержит URL-адрес из json, который преобразуется из строки в URL

Я хочу сохранить эти" myData "в том же json выше с другим ключом и получить доступ к тому же в будущем.

Я пытаюсьсохранить myData в json, используя метод SwiftyJSON:

responseJSON["image"] = try JSON(data: myData)

Ошибка, которую я получаю: "if Ошибка при преобразовании данных в json Данные не могут быть прочитаны, поскольку они имеют неправильный формат. "

Я не понимаю, в чем проблема?Изображение присутствует на этом URL.если я преобразую myData в UIImage и если я назначу его в UIImageView, я смогу его увидеть.

1 Ответ

0 голосов
/ 07 июня 2018

Если вы хотите сохранить изображение в формате JSON, лучшим способом будет преобразовать Data в строку Base64

if let base64encodedString =  myData.base64EncodedString(){
    responseJSON["image"] = base64encodedString
}

Чтобы восстановить изображение, попробуйте это

guard let base64encodedString = responseJSON["image"] as? String else { return }
guard let imageData = Data(base64Encoded: base64encodedString) else { return }
let image = UIImage(data: imageData)

Хотя изображения в кодировке Base64 занимают примерно на 33% больше места, чем необработанные данные, они безопасны для Интернета и базы данных - строки base64 не содержат ни управляющих символов, ни кавычек и могут передаваться как параметры в строках запроса URL.

...