Отправить CoreData на сервер POST запросом


#1

Добрый день, необходимо отправить данные CoreData с помощью POST запроса на сервер. Делаю это так:

func postCoreData() {
guard let url = URL(string: "http://jsonplaceholder.typicode.com/posts") else {return}
let parameters = [dataCoreData]
var request = URLRequest(url: url)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
guard  let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
    return
}
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) {(data, response, error) in
    if let response = response {
        print(response)
    }
    guard let data = data else {return}
    do {
        let json = try JSONSerialization.jsonObject(with: data, options: [])
        print(json)
    } catch {print(error)}
}.resume()
}

dateCoreData получается из следующего:

        let managedContext = PersistentSave.persistentContainer.viewContext
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "LogTable")
    request.returnsObjectsAsFaults = false
    request.predicate = NSPredicate(format: "type_log == %@", type)
    do {
        let result = try managedContext.fetch(request)
        for data in result as! [NSManagedObject] {
           let prStr = data.value(forKey: "str") as! String
           let prDate = data.value(forKey: "date_log") as! Date
           let prName = data.value(forKey: "name") as Any
            dataCoreData = (prStr, prDate, prName)
        }

Но к сожалению при отправке в теле пишет null. Может кто то знает как это исправить или это технически невозможно?


#2

Что у вас в httpBody получается?


#3

В httpBody - (nill). Хотя печать в консоль и в файл coredata вполне нормально работает.


#4

Я как раз и спрашивал про вывод в консоль.


#5

Во-первых по вашему коду, не видно, где из кортежа dataCoreData для каждого элемента получается массив? Вы парсите result из кордаты, где можеть быть несоклько объектов, получая кортеж dataCoreData для каждого элемента кордаты. И отправляете в JSONSerialization.data массив с одним кортежем dataCoreData

Во-вторых зачем в сериализейшн отправлять массив кортежей, а не объектов структуры например?