swift語言IOS8開發戰記21 Core Data2

來源:互聯網
上載者:User

標籤:coredata   data model   swift   ios   資料庫   

        新年到了,祝大家大家羊年快樂,喜氣洋洋。上一話中我們簡單地介紹了一些coredata的基本知識,這一話我們通過編程來實現coredata的使用。這一話中建立的幾個變數對照上一話中講到的coredata中重要的變數,在AppDelegate中,添加如下代碼:

lazy var applicationDocumentsDirectory:NSURL = {        let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)        return urls[urls.count - 1] as NSURL        }() //官方比較推薦的寫法

        跟我們之前接觸的大多數資料庫訪問的語句相似,這是通過一個閉包來設定url的。

  lazy var managedObjectModel: NSManagedObjectModel = {        let modelUrl = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd")        return NSManagedObjectModel(contentsOfURL: modelUrl!)!        }()//載入model

     還記得我們在coredata中定義的那個Model麼,上面這段代碼會載入這個Model。

lazy var persistenetStoreCoordinator:NSPersistentStoreCoordinator = {        var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)        let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("data.sqlite")        var error: NSError? = nil        var failureString = "Three was an error when creating or loading the application's saved data"        if coordinator?.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil {            coordinator = nil            let dict = NSMutableDictionary()            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's save data"            dict[NSLocalizedFailureReasonErrorKey] = failureString            dict[NSUnderlyingErrorKey] = error            error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)            NSLog("Unsolved error\(error), \(error.userInfo)")            abort()//有錯誤直接退出        }        return coordinator!//沒有錯誤就返回                }()//持久化

       上面這段代碼定義了持久化的儲存空間和錯誤的處理方式

   

   lazy var managedObjectContext:NSManagedObjectContext = {        let coordinator = self.persistenetStoreCoordinator        var managedObjectContext = NSManagedObjectContext()        managedObjectContext.persistentStoreCoordinator = coordinator        return managedObjectContext                }()//上下文
     變數定義足夠了之後我們來定義方法:

    func saveContext(){        if let moc = self.managedObjectContext {            var error:NSError? = nil            if moc.hasChanges && !moc.save(&error){             NSLog("Unsolved error\(error), \(error.userInfo)")                abort()            }        }        }

  上一話中說過,如果沒有調用save方法,那麼我們對coredata的操作都會在記憶體中,而不會持久化。定義完方法之後,我們對coredata的準備都已經完成了。最後強調一點,coredata並不是資料庫,它只是一個架構,協助我們進行資料庫操作,它並不關心我們把資料存到哪裡。此外我們只建立一個model是不夠的,需要再建立一個關聯檔案如所示:

一路點下去,後面的操作是自動關聯的,產生的檔案如下:




swift語言IOS8開發戰記21 Core Data2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.