gpt4 book ai didi

ios - 保留对 Core Data 对象的引用不好吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:23:55 25 4
gpt4 key购买 nike

在 View Controller 中保留对托管对象的引用是一种不好的做法吗?

我对 Core Data 比较陌生,我最近发现你不能混合来自不同上下文的托管对象,例如如果对象不属于您的上下文,则不能将它们添加到关系中。

例如,假设我们有一个经典的 Employee 实体和一个 EmployeeDetailsViewController,它保持对 Employee 对象的强引用。

我应该存储员工的 ID 而不是 Employee 对象吗?使用 ID 而不是域对象似乎很不方便,所以我想知道通常是如何完成的。

最佳答案

欢迎来到 Core Data 的世界!

首先,您的应用程序中可能有太多 NSManagedObjectContext 实例。您的整个用户界面应该在 ONE 上下文中运行。这将解决您的人际关系问题。

至于保留引用,保留它们没有问题除了当有机会从另一个线程删除该对象时。如果您遇到要在后台线程(例如从网络操作中)删除的情况,那么您可能不想保留对这些对象的强引用,因为它会让您陷入困境。

Is it a good idea to have a separate context for one kind of changes e.g. stuff coming from server, and another for e.g. user changes (made through the UI)? I'm working on an app with a "sync offline changes" kind of feature and trying to figure out how to track these two types of changes separately so that for example changes coming from server would be discarded if user modified the same object. (you can also take a look at my other question about sync) (what a lengthy comment!)

所以我遵守的规则是:

  • 如果是用户界面;主队列上下文。没有异常(exception)
  • 如果不是用户界面;私有(private)队列上下文。没有异常(exception)

我通常将我的私有(private)队列上下文作为主队列上下文的子级,以减少我需要处理的代码量和合并。

因此,您的服务器同步不是 UI,应该针对私有(private)子上下文运行。

观看我在 MVC-N 上的演讲进行更深入的讨论。

关于ios - 保留对 Core Data 对象的引用不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294296/

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