ManagedObject не является обычным объектом.Это объектно-ориентированный способ оценки базы данных.Управляемые объекты используют контекст для получения всех своих свойств.Управляемый объект должен иметь контекст - он просто не работает без него.
extension Item {
static func insert(json:JSON, in context:NSManagedObjectContext) -> Item{
let newItem = Item.init(entity: Item.entity(), insertInto:context)
newItem.name = json["name"].stringValue
newItem.symbol = json["symbol"].stringValue
newItem.buyPrice = json["price_usd"].stringValue
newItem.rank = json["rank"].stringValue
}
}
Обратите внимание на две вещи об этом методе: 1) он не предполагает, что он знает контекст - это работа для высшегоуровень - для некоторых приложений он просто вставляется прямо в viewContext, для других приложений создается временный фоновый контекст.и 2) он не сохраняет контекст - это тоже не его работа - другой объект может быть отредактирован или создан одновременно, и все они должны быть сохранены транзакционно.
Он будет использоваться, например, так:
persistentContainer.performBackgroundTask { (context) in
let newItem = Item.insert(json: json, in: context)
do {
try context.save()
} catch {
// log to you analytic provider
}
}
Надеюсь, это поможет.