我创建了一个与相应的Core Data实体匹配的NSManagedObject
类。该类有一个初始化程序,因此我可以传入属性值并分配它们。
一旦NSManagedObject
类初始化并准备保存到Core Data,您究竟如何保存它?
我见过的例子都是从NSManagedObjectContext
创建一个新类开始的。我不想去那条路,因为我正在创建类,就像任何其他类一样。
有没有办法将这个对象传递给NSManagedObjectContext
并调用它的save()
方法。
听起来你可能没有正确初始化你的托管对象。在初始化程序中分配属性值是不够的 - 您必须使用指定的初始化程序。您看到的示例都使用NSManagedObjectContext
,因为托管对象的指定初始化程序需要一个。如果您没有提供,则不使用指定的初始化程序,并且您将无法将对象保存在Core Data中。
这是Core Data的基本要求之一。您必须使用必须正确初始化的托管对象,并且这样做需要上下文。
您不保存托管对象 - 您告诉上下文保存它所知道的任何更改,包括对其任何托管对象的更改。您可以通过创建仅知道一个新对象的新上下文来使其更精细。但是将对象保存在一个上下文中并不会自动让其他上下文知道,因此最终会增加一些复杂性以保持更改同步。
Apple的Core Data Programming Guide详细介绍了示例代码。