gpt4 book ai didi

iphone - 核心数据关系计数更新

转载 作者:行者123 更新时间:2023-12-03 20:58:05 25 4
gpt4 key购买 nike

我有一个包含博客组、博客和帖子的核心数据模型。博客组与博客之间存在一对多关系,每个博客与帖子之间存在一对多关系。帖子具有属性“hasBeenRead”。博客和博客组都具有属性“numberUnreadPosts”。

我想知道通过每个关系传播未读帖子数量的最佳实践。例如,如果我读了一篇文章,我想将博客和博客组中未读文章的数量减少一个。谢谢!

最佳答案

有几种方法可以做到这一点。

KVO 观察者

您的 BlogGroup 可以监视博客实体 -numberUnreadPosts 属性的更改,并且当它更改时它可以自行更新。

同样,您的博客可以监视 Post 实体 -hasBeenRead 属性的更改,并且当它发生更改时,它可以 self 更新,从而传播到 BlogGroup。

此设计的问题在于它假设 BlogGroup 和 Blog 实体都在内存中(因为您将在 -awakeFromFetch 方法中打开观察器)。情况可能并不总是如此,我发现最好不要依赖这种情况。

传播更新

当帖子更改 -hasBeenRead 属性时,您可以覆盖 setter 并让它调用它的父级(博客)并告诉它有关更改的信息。然后,博客将更新它自己的未读计数,并告诉 BlogGroup 它已更新。

这种设计更加一致,并且不太可能失败。然而,由于波动,它可能会产生不可预见的后果。当您更改帖子时,许多对象会被提取到内存中进行更新。

或者不用担心

第三种选择是只有帖子才真正有值(value)。然后,您可以在 Blog 和 BlogGroup 上生成一个方便的方法,仅计算下面对象的未读内容。

这非常简单,但它不是可观察的属性,因此可能不适用于您的设计。

您的应用程序的设计将决定哪种设计更适合您。如果您知道在处理帖子时始终会实现 BlogGroup 和 Blog,那么选项一是更好的解决方案。

关于iphone - 核心数据关系计数更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498787/

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