代码之家  ›  专栏  ›  技术社区  ›  blu

Is CoreData typically used as the Model or is it an implementation detail of the Infrastructure?

  •  3
  • blu  · 技术社区  · 14 年前

    我想在iPhone应用程序中使用sqlite数据库。我正在阅读的书中的例子让控制器直接调用coredata对象。

    来自.NET中的MVC/MVP对我来说,这类似于在按钮事件处理程序中打开SQL连接。I would typically have a repository that handled the details of retrieving/persisting the model.

    1)在控制器中直接使用CORIDATA功能是常态吗?

    2)是否将我的域模型提取到单独的类中,这些类在iPhone上来回转换到持久层(关于性能、内存、预期的项目组织等)不是一个好主意?

    3)在iPhone上创建存储库层是否有效?

    按照Smalltalk的背景目标C和iPhone应用程序的MVC方法,我希望能够利用域模型、存储库、IOC等。

    Is that just not realistic? Are the author and I just on different pages? Thanks for any input.

    2 回复  |  直到 11 年前
        1
  •  2
  •   Jason McCreary    11 年前

    iPhone SDK遵循MVC模式,但也有许多其他模式(委托)。所以它可能不像你提到的其他语言那么严格。要回答您的问题:

    1. 您将不可避免地从控制器访问您的模型。只要在模型中处理这些操作的实现,那么您将遵循MVC模式。这是由coredata框架提供的。So in the end, it is your DAO, ActiveRecord, etc.

    2. 如果希望添加额外功能,可以生成模型类(model.m/h)。但是,coredata通常会为您即时构建它们。

    3. 如果没有.NET背景,我不太理解这一点,但我认为我对您第一个问题的回答可能是间接回答的。

    我不能和你正在读的那本书说话,但你最好还是多看看参考书。查看ADC参考文档中的核心数据介绍,以及一个示例项目——Coredatabooks。

        2
  •  2
  •   Jared Pochtar    14 年前

    是的,核心数据通常用作模型。如果我理解您所说的是正确的,那么您期望实际数据存储和控制器之间有一个层。核心数据就是那个层——它(有时)是在sqlite中实现的,所以您永远不会直接使用sqlite。这就是我认为您困惑的根源——您不应该在同一个项目中对同一个数据同时使用这两者。