objective-c - iOS MVC : where does the model fit-in to a CoreData application?

标签 objective-c ios model-view-controller core-data model

我刚刚开始使用 CoreData 制作应用程序,但我熟悉 MVC 概念,因为我曾经使用(和开发)MVC 框架在 Web 开发中做了大量工作。

据我所知,CoreData 会自动生成继承自 NSManagedObject 的类。这些对象是通过对上下文的获取请求或通过将新对象插入上下文来创建的。在我见过的应用程序中,除了与其在数据库中的属性相对应的属性之外,对象是空的,本质上使它们成为模拟实体表中一行的对象。

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

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

我想在开始开发 CoreData 应用程序之前验证此信息,以便从一开始就正确地进行开发。在 web 开发中,我习惯于每个 Controller 都有一个模型,但在 iOS 上,似乎可以有很多模型都在做自己的事情,许多 Controller 使用这些模型,所有这些模型都是额外的到 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: 方法以方便按特定顺序排序,或者实现 -getCurrentImage 方法从 Web 服务器检索产品图像。此外,您的模型可能包含一个或多个模型 Controller 类来处理诸如获取请求之类的事情,因此程序的其余部分甚至不需要知道该模型使用了 Core Data。

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 程序员可能会把它放在 View Controller 中只是因为它看起来很方便,但我同意让它成为你模型的一部分是一个更好的计划。

关于objective-c - iOS MVC : where does the model fit-in to a CoreData application?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323866/

相关文章:

ios - Xcode 找不到头文件

objective-c - Cocoa:如何通过obj-c识别它是台式机还是笔记本电脑?

iphone - 我需要释放xib资源吗?

iphone - 我如何在我的 iphone 应用程序中验证 obj c 中的这个简单条件

ios - 解析 + Stripe iOS main.js

ios - 解析 API 1.6.4 - 无法构建项目

objective-c - RestKit:在 didLoadObjects 中了解请求是 POST 还是 PUT

xml - 带有 XML 的 Spring 3 REST 给出 "406 Not Acceptable"

Cocoa MVC ≠ 实际的 MVC?

model-view-controller - Ext JS 的 MVC 是反模式吗?