0

我使用辅助类来获取一个包含 NSManagedObjectContext 的块。

+ (void)openTheDocumentAndPerformBlock:(completion_handle_t)completionBlock;

现在我想将其中一个 NSManagedObject 保留在块之外,因为我想不断地与它进行交互。而且如果不能保存在ViewController中,每次需要的时候都要去查询,真的很麻烦。

1,我可以通过segue将NSManagedObject传递给另一个VC吗?
2,当那些东西附加时,UIManagedDocument 是否必须一直打开?
3、我可以在块外编辑NSManagedObject,并保存在块中吗?

4

1 回答 1

1

如果我正确理解您的问题,您只需要NSManagedObject在您的类(视图控制器类)中添加一个类型的实例变量,以便您可以将您在块中查询的托管对象分配给该变量。你可以在任何你想要的地方使用它。
至于您的其他问题:
1. 希望以下代码片段有效:在您的目标视图控制器类中声明一个实例变量来存储传递的对象。

@property (strong) NSManagedObject *container;

prepareForSegue:源视图控制器的方法中获取目标 vc 并传递托管对象:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UIViewController *destVC = [segue destinationViewController];
    [destVC setValue:<managed object from block> forKey:@"container"]
}

是的,您可以在块内部和外部使用 NSManagedObject,只要它与您使用的托管对象上下文相同。

我不知道你的第二个问题的答案。

于 2012-09-18T10:12:10.580 回答