Sebelumnya di aplikasi saya dengan CoreData
saya biasa mendefinisikan NSManagedObjectContext
saya dengan cara ini:
class MyViewController: NSViewController {
lazy var moc: NSManagedObjectContext? = {
let app = NSApplication.sharedApplication().delegate as! AppDelegate
if let moc = app.managedObjectContext {
return moc
} else {
return nil
}
}()
// ....
}
Tapi kemudian saya mengunduh contoh aplikasi Apple bernama Eartquakes
dan di sana NSManagedObjectContext
seperti itu:
import Cocoa
class CoreDataStackManager {
class var sharedManager: CoreDataStackManager {
struct Singleton {
static let coreDataStackManager = CoreDataStackManager()
}
return Singleton.coreDataStackManager
}
// persistenStoreCoordinator etc...
Dan di ViewController:
class ApplesViewController: NSViewController {
private lazy var managedObjectContext: NSManagedObjectContext = {
let moc = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
moc.persistentStoreCoordinator = CoreDataStackManager.sharedManager.persistentStoreCoordinator
return moc
}()
}
Jadi saya hanya ingin tahu cara mana yang benar - saya berasumsi itulah cara Apple :) - dan itulah mengapa Core Data Stack didefinisikan di AppDelegate secara default?