Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CoreData通常用作模型还是基础架构的一个实现细节?_Objective C_Design Patterns_Architecture_Core Data - Fatal编程技术网

Objective c CoreData通常用作模型还是基础架构的一个实现细节?

Objective c CoreData通常用作模型还是基础架构的一个实现细节?,objective-c,design-patterns,architecture,core-data,Objective C,Design Patterns,Architecture,Core Data,我想在iphone应用程序中使用Sqlite数据库。我正在阅读的书中的示例中,控制器直接调用CoreData对象 从.NET中的MVC/MVP来看,这类似于在按钮事件处理程序中打开SQL连接。我通常会有一个存储库来处理检索/持久化模型的细节 1) 在控制器中直接使用CoreData功能是否规范 2) 在iPhone上,将我的域模型提取到单独的类中并来回转换到持久性层不是一个好主意(在性能、内存、预期项目组织等方面) 3) 在iPhone上创建存储库层会很好吗 使用SmallTalk的Object

我想在iphone应用程序中使用Sqlite数据库。我正在阅读的书中的示例中,控制器直接调用CoreData对象

从.NET中的MVC/MVP来看,这类似于在按钮事件处理程序中打开SQL连接。我通常会有一个存储库来处理检索/持久化模型的细节

1) 在控制器中直接使用CoreData功能是否规范

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

3) 在iPhone上创建存储库层会很好吗

使用SmallTalk的Objective-C和iPhone应用程序的MVC方法,我希望能够利用领域模型、存储库、IoC等


这不现实吗?作者和我只是在不同的页面上吗?感谢您的支持。

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

  • 您将不可避免地从控制器访问模型。只要这些操作的实现是在模型中处理的,那么您就遵循MVC模式。这是由CoreData框架提供的。所以最后,它是您的DAO、ActiveRecord等

  • 如果希望添加额外功能,可以生成模型类(Model.m/h)。但是,CoreData通常会动态地为您构建它们

  • 没有.NET背景,我不太明白这一点,但我想我对你第一个问题的回答可能间接地回答了这个问题


  • 我不能和你正在读的那本书交谈,但你最好看看其他的参考资料。查看ADC参考文档中的核心数据介绍以及其中一个示例项目-核心数据手册。

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

    我不认为控制器上的handle CRUD与MVC类似。您应该在模型层上处理此问题。模型层不是唯一的实体虽然前面的一行不清楚,但我坚持我的观点——只要这些操作的实际性能在模型中得到处理,那么您就是在遵循MVC模式。