Como usar o Swift 4 Codable no Core Data?

Codable parece um recurso muito interessante. Mas eu me pergunto como podemos usá-lo no Core Data? Em particular, é possível codificar / decodificar diretamente um JSON de / para um NSManagedObject?

Eu tentei um exemplo muito simples:

e definidoFoo Eu mesmo:

import CoreData

@objc(Foo)
public class Foo: NSManagedObject, Codable {}

Mas ao usá-lo assim:

let json = """
{
    "name": "foo",
    "bars": [{
        "name": "bar1",
    }], [{
        "name": "bar2"
    }]
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let foo = try! decoder.decode(Foo.self, from: json)
print(foo)

O compilador falhou com este erro:

super.init isn't called on all paths before returning from initializer

e o arquivo de destino foi o arquivo que definiuFoo

Eu acho que provavelmente fiz errado, já que eu nem passei umNSManagedObjectContext, mas não tenho ideia de onde colocá-lo.

O Core Data suportaCodable?

questionAnswers(4)

yourAnswerToTheQuestion