具有可选属性的实体在雪豹中崩溃
Posted
技术标签:
【中文标题】具有可选属性的实体在雪豹中崩溃【英文标题】:Entity with optional attribute crashes in Snow Leopard 【发布时间】:2013-04-16 08:50:49 【问题描述】:好的,所以我的问题很简单。我需要我的属性之一是可选的。在 10.7 和 10.8 下它很好,但在雪豹下它会崩溃。当我取消选中“可选”时,它不再崩溃,但现在保存会导致错误并且不会发生。
这就是我设置托管对象上下文的方式:
self.notesPersistentStore = [self.notesStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:self.notesStoreUrl
options:nil
error:nil];
_notesContext = [[NSManagedObjectContext alloc] init];
_notesContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy;
[_notesContext setPersistentStoreCoordinator:self.notesStoreCoordinator];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notesContextChanged:)
name:NSManagedObjectContextObjectsDidChangeNotification
object:self.notesContext];
这是崩溃的部分:
- (void)notesContextChanged:(NSNotification *)notification_
[self.notesContext save:nil];
【问题讨论】:
【参考方案1】:知道了!
Snow Leopard 希望 NSManagedObjectContext 的保存发生在主线程上
dispatch_async(dispatch_get_main_queue(), ^
NSError *error;
[self.notesContext save:&error];
[Utils handleError:error];
);
现在它可以工作了!
让我感到困惑的是,如果所有属性都被指定为强制属性,那么即使在 10.6 上,它也可以在不运行在主线程上的情况下工作得很好。哦,好吧……
【讨论】:
以上是关于具有可选属性的实体在雪豹中崩溃的主要内容,如果未能解决你的问题,请参考以下文章