gpt4 book ai didi

objective-c - NSManagedObjectContext 具有不同的进程

转载 作者:行者123 更新时间:2023-12-03 18:00:10 26 4
gpt4 key购买 nike

我有两个进程正在与同一个持久存储进行通信。我将上下文保存在一个进程上,然后发布一个分布式通知。另一个进程看到分布式通知,并再次获取其数据,但仍然收到旧数据。我是否需要进行某种“刷新”才能让其他进程从商店获取正确的数据?

编辑:所以,事实证明我正确地刷新了数据。 NSManagedObjects 有一个“refreshObject:mergeChanges”方法,您可以使用它来执行此操作。该问题似乎与时间相关。假设我有两个进程,A 和 B。进程 A 是主进程,它会保存到数据库。然后,进程 B 向数据库进行保存,并向进程 A 发送已完成保存的通知,然后进程 A 获取新数据。我发现如果进程 A 的保存和进程 B 的保存距离太近,即使我刷新,进程 A 也会获取旧数据。如果我强制在两次保存之间留出一些时间,那么它就会正确地工作。

显然,这看起来像是某种竞争条件,其中可能在数据实际保存到数据库之前发送通知,但是,通知是在托管对象的 didSave 方法中发送的,此时上下文已保存。

最佳答案

您应该检查合并策略概念,以在不同上下文之间管理、获取和传达持久存储协调器的正确值。

这里 -> http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdChangeManagement.html#//apple_ref/doc/uid/TP30001201-CJBDBHCB

这应该可以解决问题。

希望这能有所帮助。

关于objective-c - NSManagedObjectContext 具有不同的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830778/

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