У меня есть подкласс NSManagedObject (CarBrand) только с двумя свойствами:
public class CarBrand: NSManagedObject, CDCodable {
@NSManaged public var id: Int64
@NSManaged public var name: String
}
Также я использую протокол Codable для анализа его из JSON ответа сервера.В случае, если ответ соответствует (или почти совпадает) моей модели - нет проблем с дублированием объекта (у меня есть статический метод для этого класса, который возвращает объект из CoreData или создает новый и возвращает его).
Но один из ответов имеет следующую структуру:
class CarBrandsResponse: Codable {
let offset: Int
let count: Int
let results: [CarBrand]
}
В этом случае я не могу найти решение для вызова этого статического метода для каждого CarBrand, потому что если я напишу
self.results = try container.decode([CarBrand].self, forKey: .results)
Он вызывает init(из :) в CarBrand для каждой записи, это означает дублирование сущности ...
Я пытался повторить поведение Decodable, но там я не нашел подходящего API-метода для этого.(unkeyedContainer(), nestedContainer(), etc.
)
Надеюсь, вы поможете мне решить эту проблему или предложите другой способ избежать дублирования.
Спасибо.