我对coredata有疑问:是否有可能在私有语境中进行获取和保存,而不向主要上下文通知任何内容。我在许多示例和教程中看到,在每次保存或获取最终我们都会结束主要背景。为什么有必要?如果我使用相同的持久协调器调用保存在私有队列上,它将不会写入光盘?在你投票之前请清除我的疑虑。
答案 0 :(得分:0)
简单的答案是肯定的,你可以在私有上下文中获取并保存作为主上下文的同一持久性存储协调器(和持久存储)。我已经为我实施了它。通常,您希望主要上下文通过合并更改来了解更改,但这不是coredata的要求。根据您在每个上下文中尝试保留的数据,由您决定。
答案 1 :(得分:0)
不同的托管对象上下文不会自动识别彼此所做的更改。如果您在两个上下文中获取相同的对象,将其更改为一个并保存更改,则另一个上下文将不知道新值,除非您以某种方式合并更改。这意味着它有旧的陈旧数据。这就是几乎每个人都合并更改的原因,因为您希望不同的上下文能够了解新的更改。
在您的情况下,如果您对私有上下文进行更改但没有做任何事情来将这些更改合并到主队列上下文中,则主队列上下文将不知道更改并仍将显示旧值。