Objective c 将NSManagedObject保持在CoreData NSManagedObject上下文块之外
我使用a helper类获取一个块,其中包含NSManagedObjectContextObjective c 将NSManagedObject保持在CoreData NSManagedObject上下文块之外,objective-c,ios,xcode,core-data,nsmanagedobject,Objective C,Ios,Xcode,Core Data,Nsmanagedobject,我使用a helper类获取一个块,其中包含NSManagedObjectContext + (void)openTheDocumentAndPerformBlock:(completion_handle_t)completionBlock; 现在我想让其中一个NSManagedObject在块之外,因为我想不断地与它交互。如果我不能把它保存在ViewController中,每当我需要它的时候,我都必须查询它,这将非常麻烦 1,我可以通过segue将NSManagedObject传递给另一个V
+ (void)openTheDocumentAndPerformBlock:(completion_handle_t)completionBlock;
现在我想让其中一个NSManagedObject在块之外,因为我想不断地与它交互。如果我不能把它保存在ViewController中,每当我需要它的时候,我都必须查询它,这将非常麻烦
1,我可以通过segue将NSManagedObject传递给另一个VC吗?2、UIManagedDocument是否必须在附加这些内容时始终打开?
3,我可以在块外编辑NSManagedObject并将其保存在块中吗 如果我正确理解了您的问题,您只需要在类(视图控制器类)中使用类型为
NSManagedObject
的实例变量,这样您就可以将在块中查询的托管对象分配给该变量。你可以在任何地方使用它。至于你的其他问题:
1.希望以下代码片段能够正常工作: 在目标视图控制器类中,声明一个实例变量以存储传递的对象
@property (strong) NSManagedObject *container;
在源代码视图控制器的prepareforsgue:
方法中,获取目标vc并传递托管对象:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
UIViewController *destVC = [segue destinationViewController];
[destVC setValue:<managed object from block> forKey:@"container"]
}
-(void)prepareforsgue:(UIStoryboardSegue*)分段发送方:(id)发送方{
UIViewController*destVC=[segue destinationViewController];
[destVC setValue:forKey:@“container”]
}
是的,您可以在块内外使用NSManagedObject,只要它与您正在使用的托管对象上下文相同
我不知道你的第二个问题的答案。是的,thx很多……因此,我们可以将NSManagedObject保存在块之外。但是我们不能在块之后立即使用它(在代码方面)。。。我们需要等待一段时间,直到区块完成?是的。如果您的逻辑需要完成,请选择“是”。