gpt4 book ai didi

ios - 父/子 NSManagedObjectContext 不工作

转载 作者:行者123 更新时间:2023-11-29 13:26:57 25 4
gpt4 key购买 nike

我在使用父子 NSManagedObjectContext 时遇到了一些问题。问题是我想在我的 EventsPlanner 类中使用子 NSManagedObjectContext 来创建随机事件。如果您注意到直接保存到主 NSManagedObjectContext 会起作用,但我想使用子项并更新到父项。

如果您看到按下“+”按钮会添加一个新事件,但它看起来是空的。

我添加了示例项目 --> https://dl.dropbox.com/u/63377498/ParentChildExperiment.zip

创建子 NSManagedObjectContext:

- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_managedObjectContext setUndoManager:nil];
[_managedObjectContext setParentContext:appDelegate.managedObjectContext];
return _managedObjectContext;
}

保存:

Event *event = [[Event alloc] initWithEntity:self.eventEntity insertIntoManagedObjectContext:nil];
event.title = ...;
event.location = ...;
event.timeStamp = ...;

[self.managedObjectContext insertObject:event];

[self.managedObjectContext performBlock:^{

NSError *childError = nil;
if ([self.managedObjectContext save:&childError]) {
[self.managedObjectContext.parentContext performBlock:^{

NSError *parentError = nil;

if (![self.managedObjectContext.parentContext save:&parentError]) {
NSLog(@"parent error: %@", [parentError description]);
abort();

}
}];
} else {
NSLog(@"child error: %@", [childError description]);
abort();
}}];

谢谢!

最佳答案

我无法告诉您这不起作用的确切原因,但问题似乎是您创建了没有托管对象上下文的 Event 实体,并稍后将其添加到 MOC:

// Create random object
Event *event = [[Event alloc] initWithEntity:self.eventEntity insertIntoManagedObjectContext:nil];
event.title = ...;
event.location = ...;
event.timeStamp = ...;

// Insert object
[self.managedObjectContext insertObject:event];

如果您将其更改为

Event *event = [[Event alloc] initWithEntity:self.eventEntity
insertIntoManagedObjectContext:self.managedObjectContext];
event.title = ...;
event.location = ...;
event.timeStamp = ...;

然后新事件会在表格 View 中正确显示。

关于ios - 父/子 NSManagedObjectContext 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12893840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com