0

我正在尝试使用 Apple 文档https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/Articles/NSManagedObject中“拖放”下的信息对子类实施拖放操作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

4

1 回答 1

0

将您的托管对象上下文视为暂存器。您发布的链接将其解释为:

简单地修改托管对象不会导致将更改保存到存储中。托管对象上下文充当暂存器。您可以使用它创建和注册托管对象,对对象进行更改,以及根据需要撤消和重做更改。如果您对与给定上下文关联的托管对象进行更改,这些更改将保持在该上下文的本地,直到您通过向上下文发送 save: 消息来提交更改

因此,您可以使用在其他地方使用的相同上下文。假设您使用 Apple 核心数据模板在 appDelegate 中创建了一个上下文。此上下文将出现managedObjectContext在您的代码中。您使用mo对象,最后save:使用上下文或执行rollback.

于 2013-10-28T11:39:50.007 回答