Swift-Core Data(2) 基礎存儲

Swift-Core Data(1) 基礎存儲
Swift-Core Data(2) 基礎存儲

上一篇簡單的寫了點存儲和查詢功能,這篇寫一下當你的項目沒有勾選 Use Core Data 怎么辦?

1.創(chuàng)建數(shù)據(jù)庫模板

數(shù)據(jù)庫模板.png

如上圖創(chuàng)建一個數(shù)據(jù)庫模板,創(chuàng)建好之后,安裝上一篇文章創(chuàng)建 entity 和他的屬性泻帮。
然后選擇手動生成或者自動生成相應的實體類代碼,系統(tǒng)默認是自動生成的,全憑個人所好。

生成相應的實體類代碼

2.創(chuàng)建 Core Data Stack

一個基本的 Core Data Stack由四個主要部分組成:托管對象 (NSManagedObject)饿自,托管對象上下文 (NSManagedObjectContext)匀们,持久化存儲協(xié)調(diào)器 (NSPersistentStoreCoordinator),以及持久化存儲 (NSPersistentStore)霉赡。

CoreDataStack炒事,是自定義的一個CoreData 的棧對象,可以通過它娃圆,初始化項目的CoreData玫锋,以及獲取到Context,對數(shù)據(jù)庫進行增刪改查等操作讼呢。

2.1 iOS9

在iOS9中撩鹿,CoreData Stack的三個核心類是這樣的:

  • 管理對象上下文NSManagedObjectContext
  • 對象模型NSManagedObjectModel
  • 存儲調(diào)度器NSPersistentStoreCoordinator
    這個時候存儲是在Documents中間。

2.2 iOS10之后

iOS10之后就有點不一樣了, 增加了一個叫做NSPersistentContainer的東西悦屏。這個玩意兒作用就是用來管理CoreData Stack三痰,為了能夠讓大家用起來更爽吧寺、更簡單。

需要說明的是散劫,NSPersistentContainer 一點都沒有向下兼容的意思稚机,完全不兼容iOS9.0,如果非要在iOS9.0里面使用获搏,會直接閃退赖条。

這個時候存儲是在Library->Application Support中。

2.3 創(chuàng)建 ios 10 的CoreData Stack

創(chuàng)建CoreData Stack有兩種方式:

1.創(chuàng)建個新項目,是勾選了 Core Data 的,然后將AppDelegate.swift 中有關的 Core Data 的代碼復制粘貼過來,就可以使用了

注意:一定要將let container = NSPersistentContainer(name: "") 中的 name 參數(shù)改成你自己創(chuàng)建的數(shù)據(jù)庫模板的名字

2.創(chuàng)建個類實現(xiàn)CoreData Stack
  • Step1: 創(chuàng)建NSPersistentContainer
  • Step2: 創(chuàng)建CoreData Stack
  • Step3: 別忘了還有一個NSManagedObjectContext
  • Step4: 提供一個保存數(shù)據(jù)的方法
  • Step5: 在AppDelegate.swift里面初始化一下CoreDataStack
CoreDataStack.swift

class CoreDataStack {
    //數(shù)據(jù)庫模板名字
    private let modelName: String
    
    init(modelName: String) {
        //初始化模板
        self.modelName = modelName
    }
    
    //懶加載 持久化存儲協(xié)調(diào)器 NSPersistenStoreCoordinator
    lazy var storeContainer: NSPersistentContainer = {
        
        let container = NSPersistentContainer(name: self.modelName)
        
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                debugPrint("Unclear error\(error)")
            }
        })
        return container
    }()
    
    //懶加載 托管對象
    lazy var managedContext: NSManagedObjectContext = {
        return self.storeContainer.viewContext
    }()
    
    //數(shù)據(jù)庫保存數(shù)據(jù)的方法
    func saveContext() {
        guard managedContext.hasChanges else { return }
        do {
            try managedContext.save()
        } catch let error as NSError {
            debugPrint("Unclear error\(error)")
        }
        
    }
}

AppDelegate.swift 里面初始化

AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var managedContext: NSManagedObjectContext!
    lazy var coreDataStack = CoreDataStack(modelName: "PersonCoreData")
    
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        self.managedContext = coreDataStack.managedContext
        return true
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末常熙,一起剝皮案震驚了整個濱河市纬乍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裸卫,老刑警劉巖仿贬,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異墓贿,居然都是意外死亡茧泪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門聋袋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來队伟,“玉大人,你說我怎么就攤上這事幽勒∈任辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵啥容,是天一觀的道長锈颗。 經(jīng)常有香客問我,道長咪惠,這世上最難降的妖魔是什么宜猜? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮硝逢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绅喉。我一直安慰自己渠鸽,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布柴罐。 她就那樣靜靜地躺著徽缚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪革屠。 梳的紋絲不亂的頭發(fā)上凿试,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天排宰,我揣著相機與錄音,去河邊找鬼那婉。 笑死板甘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的详炬。 我是一名探鬼主播盐类,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呛谜!你這毒婦竟也來了在跳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤隐岛,失蹤者是張志新(化名)和其女友劉穎猫妙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聚凹,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡割坠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了元践。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韭脊。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖单旁,靈堂內(nèi)的尸體忽然破棺而出沪羔,到底是詐尸還是另有隱情,我是刑警寧澤象浑,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布蔫饰,位于F島的核電站,受9級特大地震影響愉豺,放射性物質(zhì)發(fā)生泄漏篓吁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一蚪拦、第九天 我趴在偏房一處隱蔽的房頂上張望杖剪。 院中可真熱鬧,春花似錦驰贷、人聲如沸盛嘿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次兆。三九已至,卻和暖如春锹锰,著一層夾襖步出監(jiān)牢的瞬間芥炭,已是汗流浹背漓库。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留园蝠,地道東北人渺蒿。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像砰琢,于是被迫代替她去往敵國和親蘸嘶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355