Goal
- это @NSManagedObject
, поэтому вам нужно использовать его init с контекстом. Когда вы создаете объект сущности, вы должны поместить его в какое-то хранилище - это хранилище контекста. После этого вы можете приводить все необходимые вам свойства, включая ссылки.
let goal = Goal(context: context)
goal.goalName = "Try Harder"
goal.goalComplete = false
goal.goalOfGame = newGame
return GameGoalsDetail(game: newGame).environment(\.managedObjectContext, context)
, если вы устанавливаете обратные ссылки в модели данных, нет необходимости использовать методы add, сгенерированные CoreData, если у вас есть хотя бы 1 one-to-one
ссылка. Вы просто устанавливаете эту ссылку как значение свойства, и CoreData делает всю работу за вас. goal.goalOfGame
- это ссылка с обратным свойством one-to-one
к родительскому элементу.
Если вы действительно хотите использовать init со всем свойством, которое хотите преобразовать, просто переопределите его в расширении для вашего класса следующим образом:
extention Goal{
init(of game: Game, name: String = "unnamed", complete: Bool = false, context: NSManagedObjectContext
){
super.init(context: context)
self.goalOfGame = game
self.goalName = name
self.complete = goalComplete
}
}