The Core Data Stack

2200 단어
4Core Data Stack 다음과 같은 네 가지 클래스로 구성됩니다.
  • NSManagedObjectModel
  • NSPersistentStore
  • NSPersistentStoreCoordinator
  • NSManagedObjectContext

  • 자체 Core Data Stack 구현
    class CoreDataStack {
        
        let modelName = "Dog Walk"
        
        
        
        private lazy var applicationDocumentsDirectory: NSURL = {
            
            
            // [NSURL]
            
            let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
            print(urls.count)
            
            return urls[urls.count - 1]
            
        }()
        
        
        lazy var context:NSManagedObjectContext = {
            
            
            // 
            var manageObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
            // 
            manageObjectContext.persistentStoreCoordinator = self.psc
            
            return manageObjectContext
            
        }()
        
        
        private lazy var psc: NSPersistentStoreCoordinator = {
            
            let coordinator: NSPersistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
            
            let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent(self.modelName)
            
            do {
                
                let options = [NSMigratePersistentStoresAutomaticallyOption : true]
                
                try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options)
                
            } catch {
                
            }
            
            return coordinator
        }()
        
        private lazy var managedObjectModel: NSManagedObjectModel = {
            
            let modelURL = NSBundle.mainBundle().URLForResource(self.modelName, withExtension: "momd")!
            
            return NSManagedObjectModel(contentsOfURL: modelURL)!
        }()
        
        
        func saveContext() {
            
            if context.hasChanges {
                do {
                    try context.save()
                } catch {
                    print("Eror")
                    abort()
                }
            }
        }
    }```
    
    
    

    좋은 웹페이지 즐겨찾기