Сбой при сериализации модели данных Core - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в CoreData и застрял в сериализации модели CoreData.

Мне нужно синхронизировать сохранение всего объекта в коде с API.Я могу сохранить контекст и получить результат.Проблема в функции, где я вызываю API для синхронизации.

Вот мой код:

var theJSONText = ""
dataToSend["trigger"] = ""
dataToSend["gcm"] = ""
dataToSend["client"] = "ios"
dataToSend["deviceId"] = 
UIDevice.current.identifierForVendor!.uuidString
dataToSend["deviceName"] = UIDevice.current.name
dataToSend["login_source"] = loginSource
dataToSend["lastsync"] = 0
dataToSend["rows"] = []
dataToSend["urlencode"] = true
if let rows = rows {
    for row in rows {
        if row.syncRequired == 1 {
            rowsToSync.append(row)
        }
    }
}
rowsToSync.resultType = NSDictionary
dataToSend["rows"] = rowsToSync
print( dataToSend["rows"])
if let theJSONData = try? JSONSerialization.data(
    withJSONObject: dataToSend,
    options: []) {
    theJSONText = String(data: theJSONData,
                     encoding: .ascii)!
    print("JSON string = \(theJSONText)")
}
params["data"] = theJSONText
APIService.shared.syncUser(params: params) { (success, data, error) in
    if success {
        print("success in global sync")
        rows = data?.rows
    } else {
        print("failure in global sync")
        print(error?.errorMessage)
    }
}

Здесь rows - это массив, содержащий все объекты.Это сохраняется в CoreData.

API работает нормально, когда я ничего не передаю в rows, но когда он содержит объекты, код вылетает в строке `:

try? JSONSerialization.data(
    withJSONObject: dataToSend

ошибка на консоли:

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