在上下文之间传递 objectID 时未触发 to-many 错误
Posted
技术标签:
【中文标题】在上下文之间传递 objectID 时未触发 to-many 错误【英文标题】:to-many fault not fired when passing objectID between contexts 【发布时间】:2014-12-03 17:29:18 【问题描述】:我有两个上下文:parentContext 和 childContext。当我尝试将 objectID 从 childContext 传递给 parentContext 时,不会为 parentContext 中的多对关系触发错误。
一对多关系称为“类别”并且是无序的(NSSet)。
NSManagedObjectContext *parentContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = parentContext;
childContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
NSSet *childObjects = [childContext registeredObjects];
[childContext save:NULL];
[parentContext performBlockAndWait:^
for (NSManagedObject *childObject in childObjects)
NSManagedObject *parentObject = [parentContext objectWithID:childObject.objectID];
// [parentObject hasFaultForRelationshipNamed:@"categories"]; returns false
// [childObject hasFaultForRelationshipNamed:@"categories"]; // returns true as expected
[parentContext refreshObject:parentObject mergeChanges:YES];
];
即使在 parentContext 中,我也希望“类别”关系出错。你能帮忙吗?
【问题讨论】:
您是否尝试访问该关系?不清楚您要解决什么问题。 是的,当我尝试访问 parentObject 中的关系时,它不会按预期触发错误。 刷新后怎么样?仍然不清楚您要解决哪个问题。 将对象保存在 childContext 中后,我希望将更改传播到 parentContext。所以,我试图刷新 parentContext 中的对象,但是当我尝试访问关系时,没有触发任何错误,我总是得到一个空集。刷新后我也得到相同的行为。 【参考方案1】:我想您还必须保存父上下文。子上下文保存仅将更改“推送”到父上下文,但此时它们不会保存到存储中。
一旦父上下文被保存,你的错误就会触发。
【讨论】:
以上是关于在上下文之间传递 objectID 时未触发 to-many 错误的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 和 FCM(Firebase 云消息传递)onMessage、onResume 和 onLaunch 在单击通知时未触发(包:firebase_messaging 7.0.0)