Create my own Core Data Stack的优点和用法
Create my own Core Data Stack's advantages and usage
背景: 最近我正在阅读 'CoreData by tutorials' 来学习 Core Data。这本书向我展示了如何在代码中创建一个新的核心数据堆栈,它鼓励我们这样做。
问题:
- 为什么我需要写一个新的 class 来处理核心数据堆栈而不是使用 XCode 在 AppDelegate.swift 中提供给我们的代码,这样做有什么好处吗?
- 书上获取ManagedObjectContext的方式是通过segue将之前的context传给当前的Controller。比如,首先我在
AppDelegate.swift
中初始化一个上下文,然后将此值传递给 self.window!.rootViewController as UINavigationController
的 topViewController
(A) 中名为 "context" 的 属性。其次,如果我想在控制器B中使用上下文,我需要在B中声明一个名为"context"的属性,并通过segue
[=13传递A的上下文属性 =]
这是使用上下文的唯一方法吗?我宁愿使用
if let context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
到处获取上下文..
- 如果我想使用模型来管理像获取这样的核心数据,从控制器传递 "context" 来初始化我的模型 class 是正确的方法吗?
谢谢!
- 关注点分离。如果不仔细管理,应用程序委托很快就会成为初始化应用程序部分的一站式商店,这会降低可读性/可维护性;
- 就我个人而言,我发现将 MOC 传递给控制器既乏味又容易出错。在大型项目中,我更喜欢使用单例,如 RestKit:
[[RKManagedObjectStore defaultStore] mainQueueManagedObjectContext]
;
- 如果我没理解错的话,你是在问如何创建
NSFetchRequest
个实例?如果是这样,那么是的,您将 MOC 用于主队列(无论是作为 属性 还是通过其他方式传递给控制器都是实现细节)。
背景: 最近我正在阅读 'CoreData by tutorials' 来学习 Core Data。这本书向我展示了如何在代码中创建一个新的核心数据堆栈,它鼓励我们这样做。
问题:
- 为什么我需要写一个新的 class 来处理核心数据堆栈而不是使用 XCode 在 AppDelegate.swift 中提供给我们的代码,这样做有什么好处吗?
- 书上获取ManagedObjectContext的方式是通过segue将之前的context传给当前的Controller。比如,首先我在
AppDelegate.swift
中初始化一个上下文,然后将此值传递给self.window!.rootViewController as UINavigationController
的topViewController
(A) 中名为 "context" 的 属性。其次,如果我想在控制器B中使用上下文,我需要在B中声明一个名为"context"的属性,并通过segue
[=13传递A的上下文属性 =]
这是使用上下文的唯一方法吗?我宁愿使用if let context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
到处获取上下文.. - 如果我想使用模型来管理像获取这样的核心数据,从控制器传递 "context" 来初始化我的模型 class 是正确的方法吗?
谢谢!
- 关注点分离。如果不仔细管理,应用程序委托很快就会成为初始化应用程序部分的一站式商店,这会降低可读性/可维护性;
- 就我个人而言,我发现将 MOC 传递给控制器既乏味又容易出错。在大型项目中,我更喜欢使用单例,如 RestKit:
[[RKManagedObjectStore defaultStore] mainQueueManagedObjectContext]
; - 如果我没理解错的话,你是在问如何创建
NSFetchRequest
个实例?如果是这样,那么是的,您将 MOC 用于主队列(无论是作为 属性 还是通过其他方式传递给控制器都是实现细节)。