【问题标题】:What is the preferred way to architect functions with coredata?使用 coredata 构建功能的首选方法是什么?
【发布时间】:2015-09-16 18:52:28
【问题描述】:

这里不乏关于 coredata 的教程,或者这里有关于如何开始使用 coredata 或如何使用特定部分的问题。

我的问题是更高层次的——应该如何使用 coredata 构建一个更大的项目?

  1. 项目是否应该保留大部分处理托管的功能 单个类中的对象?
  2. 应该处理的函数 方法是静态的(我想它们被称为“类方法”)或 实例方法?
  3. 是否可以将托管对象传递给类 来自不同线程的方法?如果我也提供一个 方法的上下文?
  4. 我应该只在应用启动时对每个实体进行一次提取,然后针对上下文执行所有搜索和插入操作,还是根据需要从提取请求中获取较小的数据集?

就博客圈而言,coredata 架构似乎是狂野的西部——每个人都为自己着想。这里有什么好的设计模式可以遵循吗?

【问题讨论】:

  • 任何与“什么是首选”有关的问题都无法回答,因为所有答案都是意见。对于每个这样说的答案,都会有另一个答案说这样做。只要你觉得舒服,你就可以回答你的问题。
  • 答案总是意见,但这并不意味着语言和框架没有定义最佳实践。里程会有所不同,但对于一般情况,总有更好的设计方法。

标签: ios objective-c core-data


【解决方案1】:

没错,尽管你们中的一些问题实际上是基于个人喜好。我永远不会使用 sigleton。

  1. 否和是。是的,在课堂上保持与上下文的连接,并且没有每个控制器都会请求自己的数据。
  2. 使用类方法需要您传递上下文或将其存储在静态中。如果您需要更改上下文,使用静态可能会导致问题。
  3. 不,每个线程都应该有它现在的上下文。 Core Data 不是线程保存。
  4. 为了节省内存只获取需要的内容,一次获取所有内容没有意义。

我建议使用NSFecthResultsController 来填充表格视图等内容。

如果您要获取数据并将其存储在核心数据中,我真的可以建议使用单独的上下文进行插入。 Cocoanetics 有一个很棒的article about multiple context setup

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    相关资源
    最近更新 更多