加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – iOS MVC:模型在哪里适合CoreData应用程序?

发布时间:2020-12-16 07:32:14 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用CoreData制作应用程序,但我熟悉MVC概念,因为我曾经在使用(和开发)MVC框架进行Web开发方面做了很多工作. 根据我收集的内容,CoreData自动生成从NSManagedObject继承的类.通过对上下文的获取请求或通过向上下文中插入新对象来创建对象.在我看过的
我刚刚开始使用CoreData制作应用程序,但我熟悉MVC概念,因为我曾经在使用(和开发)MVC框架进行Web开发方面做了很多工作.

根据我收集的内容,CoreData自动生成从NSManagedObject继承的类.通过对上下文的获取请求或通过向上下文中插入新对象来创建对象.在我看过的应用程序中,除了与数据库中的属性相对应的属性外,对象是空的,基本上使它们成为模仿实体表中一行的对象.

有意义的是,那些自动生成的类和CoreData本身构成了应用程序模型.在传统上我做的应用程序中,有一个Model类负责处理所有数据.这通常是Singleton类,每个需要该模型的控制器都可以简单地使用self.model = [Model sharedInstance] ;.对于更大的应用程序,可能有多个模型而不是一个巨大的模型.你得到了照片.我想我的第一个问题是:我是对的吗? CoreData及其关联的NSManagedObject构成了应用程序的整个模型?

我猜这是错误的,因为应用程序可能需要其他功能来处理没有指定CoreData对象的数据.例如:如果CoreData应用程序需要使用来自foo.com/test的HTTP请求(请假设它是JSON数据)检索的数据填充表视图,该怎么办?这些数据不需要存储在CoreData中,但与此同时,我认为检索和解析数据不是控制器的工作.应该有一个对象,FooDataManager(或类似的东西)处理HTTP请求以管理来自foo.com的数据(它可以扩展AFHTTPClient).然后处理foo.com的控制器有fooDataManager的属性,它充当该控制器的模型?然后控制器将调用[self.fooDataManager retrieveAndParseData] ;?

我想在开始开发CoreData应用程序之前验证此信息,以便我从一开始就正确地执行此操作.在Web开发中,我习惯为每个控制器设置一个模型,但在iOS上,似乎可以有许多模型都可以自己创建,许多控制器使用这些模型,所有这些模型都是另外的到CoreData和NSManagedObjects.

解决方法

From what I gather,CoreData automatically generates classes that
inherit from NSManagedObject.

否.除非您指定给定实体使用您编写的NSManagedObject子类,否则Core Data返回的对象是NSManagedObject的实例.

I guess my first question is: am I right? CoreData and it’s associated
NSManagedObject’s make up the entire model for an application?

这取决于应用程序.如上所述,如果您希望给定实体映射到您提供的NSManagedObject子类,则可以执行此操作.如果您希望数据对象包含的方法不仅仅是实体属性的访问器,那么这将非常有用.例如,您可以实现-compare:方法以便于按特定顺序排序,或者实现从Web服务器检索产品图像的-getCurrentImage方法.此外,您的模型可能包含一个或多个模型控制器类,它们处理诸如获取请求之类的事情,因此程序的其余部分甚至不需要知道模型使用核心数据.

an application may need other functionality that deals with data that
does not have an assigned CoreData object…what if a CoreData
application needs to populate a table view with data that is retrieved
through an HTTP request from foo.com/test

您绝对可以将该功能放在一个单独的类中,并将其视为模型的一部分,我想这可能是一个好主意.很多iOS程序员可能会把它放在一个视图控制器中,因为它似乎很方便,但我同意将它作为模型的一部分是一个更好的计划.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读