我正在尝试在NSManagedObject
子类上实现拖放操作,其中使用"拖放"下的信息。在Apple的文档https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/Articles/cdUsingMOs.html#//apple_ref/doc/uid/TP40001803-CJBDBHCB中。
我有一个名为Person的NSManagedObject子类,并希望使用其managedObjectID(URI编码)来执行链接操作。文档声明了以下方法从粘贴板上的URI编码的moID恢复我的Person对象:
NSURL *moURL = // get it from the pasteboard ...
NSManagedObjectID *moID = [[managedObjectContext persistentStoreCoordinator]
managedObjectIDForURIRepresentation:moURL];
// assume moID non-nil...
NSManagedObject *mo = [managedObjectContext objectWithID:moID];
我如何访问managedObjectContext?在我运行此代码(initWithCoder:
)时,该值仍为 nil 。
答案 0 :(得分:0)
将您的托管对象上下文视为暂存器。您发布的链接将其解释为:
仅修改托管对象不会导致将更改保存到商店。托管对象上下文充当暂存器。您可以使用它创建和注册托管对象,对对象进行更改,以及根据需要撤消和重做更改。如果对与给定上下文关联的托管对象进行更改,那么这些更改将保持对该上下文的本地更改,直到您通过向上下文发送save:message
来提交更改。
因此,您可以使用在其他地方使用的相同上下文。假设您使用Apple Core数据模板在appDelegate中创建单个上下文。此上下文在您的代码中变为managedObjectContext
。您使用mo
对象,最后save:
使用上下文,或者执行rollback
。