gpt4 book ai didi

objective-c - 子托管对象上下文的内容是否始终与其父对象的内容相同?

转载 作者:太空狗 更新时间:2023-10-30 03:15:41 25 4
gpt4 key购买 nike

如何更新子托管对象上下文,使其与父对象具有相同的数据?

据我所知, child 在存钱的时候,只走一步,就是给 parent 。然而,当获取时,获取总是非常深入到父级和持久存储。所以我希望事情会是一样的。

但事实并非如此。

我有一个托管对象上下文,它是所有其他托管对象上下文的父级。

一个 child 更改数据并保存。 parent 也改变了。我在父级上执行 executeFetchRequest,我看到数据发生了变化。

但是,有些 parent 的 child 仍然使用旧数据。相同的对象 ID 相同的数据。不知何故,属性(property)的值(value)保持不变。

如何告诉 child 从 parent 那里重新加载新数据?

更确切地说

说P是父

假设它有 C1 C2 C3 作为 child

然后 C1 更改数据并提交。更改传播到 P。但是,在 C2 和 C3 处执行 executeFetchRequest 仍然显示旧数据。

什么给了?

例如,当我检查 imageBlob 属性时,这就是我得到的:

child :

2013-02-05 13:57:42.865 BadgerNew[78801:c07] imageBlob: <UIImage: 0x89c3c50>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>

家长:

2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x114af650>
2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x8e492e0>
2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x114c79b0>
2013-02-05 13:57:42.869 BadgerNew[78801:c07] imageBlob: <UIImage: 0xa8c76e0>

这是一个更全面的版本,为什么我记下了 moc、父 moc、blob、URL 和对象 ID。 child :

特别是我希望主队列 managedobject 上下文是父对象的另一个子对象,而不是所有其他 managedObjectContext 的父对象。另一方面,我还希望 mainQueue Managed 对象上下文具有最新信息。我想知道标准解决方案是什么。

最佳答案

child 的现有引用无效。如果您希望 sibling 在 parent 保存后同步,您必须使用 reset 使 child 无效。

在调用reset之后,所有接收者的管理对象都被“遗忘”了。如果您使用此方法,则应确保您还丢弃对使用接收器获取的任何托管对象的引用,因为它们之后将无效。

如果您想更好地控制子上下文中已更改的对象,则还可以在保存父上下文时对所有子上下文中更改的单个对象使用 refreshObject:mergeChanges:

关于objective-c - 子托管对象上下文的内容是否始终与其父对象的内容相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687821/

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