【发布时间】:2014-02-24 07:12:33
【问题描述】:
在我正在开发的这个应用程序中,我使用核心数据来存储内容。我在AppDelegate 的didFinishLaunchingWithOptions 方法中填充数据库。在视图控制器中,我使用NSFetchRequest 提取所需的数据。
我的问题是,与提取数据相关的代码是否应该在视图控制器中?或者我应该在为这些实体生成的NSManagedObject 子类中创建单独的方法并从视图控制器中调用它们?
有人可以解释一下吗?
谢谢。
【问题讨论】:
-
您应该为它创建单独的模型类。您可以在其中添加各种方法来添加/更新/获取核心数据实体对象。如果多个视图控制器一次需要相同的数据,您也可以创建相同的共享实例。
-
你的意思是另一个全新的模型类?不是
NSManagedObject子类,对吧? -
viewController 是您通常调用 performFetch 以从 Core Data 获取实体数组(NSManagedObject 子类>)的地方。也是更新属性和/或删除对象的地方。Apple 为此提供了大量示例代码.
-
请注意,长进程可能会阻塞主线程 - 因此在 didFinishLaunching 中填充数据库可能会导致应用程序无响应,除非您在后台线程上执行此操作。
-
@DuncanGroenewald 谢谢。数据量相当小。如果有任何性能滞后的迹象,我会将保存过程移至单独的线程。
标签: ios database core-data model-view-controller nsmanagedobject