2016-12-02 5 views
0

Мне нужно преобразовать UIImage в base64 для отправки его по адресу JSON. Моя проблема заключается в преобразовании. Мой код:Преобразование изображения в Base64 для Json Swift 3

//Proof #1 
let base64String = imageData?.base64EncodedData(options: .endLineWithLineFeed) 
//Proof #2 
let base64String = imageData?.base64EncodedString(options: .endLineWithLineFeed) 

let dataJson = ["patient_image": ["title": titleInfo, "description": descriptionInfo, "patient_id": globalID, "images_attributes": ["file": base64String]]] 

    let url = NSURL(string: "MY_URL") 

    let request = NSMutableURLRequest(url: url! as URL) 
    request.httpMethod = "POST" //set http method as POST 

    request.httpBody = try! JSONSerialization.data(withJSONObject: dataJson, options: .prettyPrinted) 

    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

Я попробовал оба способа Swift 3 обеспечивает для преобразования изображения в base64, но как я получаю ту же ошибку:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)' 

Может кто-нибудь мне помочь? Я действительно ценю твою помощь.

ответ

3

Удалить опции:

let base64String = imageData.base64EncodedString() 

Полный код:

/* 
let imageData = Data() 
let titleInfo = "test" 
let descriptionInfo = "test" 
let globalID = "test" 
*/ 

let base64String = imageData.base64EncodedString() 

let dataJson = ["patient_image": ["title": titleInfo, "description": descriptionInfo, "patient_id": globalID, "images_attributes": ["file": base64String]]] 

let url = NSURL(string: "MY_URL") 
let request = NSMutableURLRequest(url: url! as URL) 
request.httpMethod = "POST" //set http method as POST 

request.httpBody = try! JSONSerialization.data(withJSONObject: dataJson, options: .prettyPrinted) 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

также (независимо от вашего вопроса) имя ключа images_attributes звучит, как он ожидает, что массив.

+0

let base64String = imageData.base64EncodedString() Прохладно, это очень помогает мне. Но я хотел бы знать, почему и какая разница, если мы используем опцию? – HamasN

 Смежные вопросы

  • Нет связанных вопросов^_^