我刚刚开始使用CoreData创建应用程序,但我熟悉MVC概念,因为我曾经在使用(和开发)MVC框架的Web开发中做了很多工作。iOS MVC:模型适合CoreData应用程序?
从我收集的内容中,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。
伟大的问题! – Chris