亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift利用CoreData實現一個上班簽到的小工具

2020-03-09 17:43:06
字體:
來源:轉載
供稿:網友

前言

我們在之前的兩篇里面實現了一個十分簡陋的通訊錄,而且都是通過系統默認的方式創建的CoreData。可是實際中哪里有那么好的事情嘛,要是忘記在創建工程的時候勾選了下面這個圖怎么辦?

swift,添加,coredata,使用,coredata教程

難道我們要把工程刪除,再重新創建嘛?很多時候再開始工程的時候并特么的不知道需要用到數據庫啊。更多的時候已經都開始敲代碼了,連需求文檔都還木有拿到手里,PM只會輕輕的說一句:設計圖不是已經有了嘛,先畫UI吧。

所以,CoreData Stack是為了解決這個問題誕生的嘛?很遺憾,并不是??戳饲懊娴膬善恼轮?,有木有覺得CoreData不怎么好用,還挺麻煩的吶?這時候要祭出CoreData Stack的啦。

1. CoreData Stack的作用

其實這個東西在一篇的時候提到過,不信您看:Swift實踐:使用CoreData完成一個通訊錄存儲

一個基本的 Core Data 棧由四個主要部分組成:托管對象 (NSManagedObject),托管對象上下文 (NSManagedObjectContext),持久化存儲協調器 (NSPersistentStoreCoordinator),以及持久化存儲 (NSPersistentStore)。

CoreDataStack,是自定義的一個CoreData 的棧對象,可以通過它,初始化項目的CoreData,以及獲取到Context,對數據庫進行增刪改查等操作。

2.創建 CoreData Stack

非典型技術宅既然說了這貨有四部分組成,那咱們就一個一個來唄。艾瑪,因為發現文章會被抄襲,抄襲之后有些人還不署名,搞的只好在文章里面內嵌入一些自己的名字。心酸~~~~

2.1 iOS9

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

-管理對象上下文NSManagedObjectContext

  • 對象模型NSManagedObjectModel
  • 存儲調度器NSPersistentStoreCoordinator

這個時候存儲是在Documents中間。

2.2 iOS10之后

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

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

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

2.3 來吧,開始創建吧

宅胖這么懶,怎么還可能再寫一個兼容iOS9.0的吶,想太多了~~~哈哈!所以,俺們只寫iOS10.0以后的。寫到這個時候,連版本號都已經寫煩了。

  • Step1:搞一個NSPersistentContainer出來
  • Step2:創建CoreData Stack
  • Step3:別忘了還有一個NSManagedObjectContext
  • Step4:提供一個保存數據的方法
  • Step5:最后別忘記了在AppDelegate.swift/292073.html">swift里面應用一下,不然不是白搞了半天嘛
 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 }() func saveContext() { guard managedContext.hasChanges else { return } do {  try managedContext.save() } catch let error as NSError {  debugPrint("Unclear error/(error)") } }

3. 一對多的關系

CoreData中實體管理關系是有三種的:1V1,1VN,NVN。咱們之前的兩個例子都是1V1。但是這個跟生活中不符啊,注意 例如一個人下了很多訂單,訂單里面又包含了很多商品。

swift,添加,coredata,使用,coredata教程

如圖所示,Relationships表示管理關系的名稱,Destination表示目標表的名字,Inverse表示反向關系。

前面兩個都比較好理解,Inverse需要稍微多說一點點。如果沒有反向關系,就選擇No Inverse,但是蘋果官方建議為了保證數據之間的一致性,最好設置反向關系。

swift,添加,coredata,使用,coredata教程

4. 完成Demo,了解使用CoreData Stack

然后咱們搞個小型本地化純良心自覺單機版的打卡器。這個打卡器用來管理員工的每次打卡時間??梢栽黾?、刪除打卡時間。

完成后的效果圖:

swift,添加,coredata,使用,coredata教程

思維導圖如下:

swift,添加,coredata,使用,coredata教程

4. 補充:如果創建工程的時候遺忘了勾選使用CoreData怎么辦

如果忘選了也沒有關系,創建一個新的Data Model文件:

swift,添加,coredata,使用,coredata教程

設置完數據庫之后,按照如下操作:

swift,添加,coredata,使用,coredata教程

好啦,就會自動生成文件啦。

所有的源代碼都在這里:

github地址:https://github.com/Stanbai/CoreDataDemo.git

 

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一av在线| 91久久久久久| 久久精品这里热有精品| 久热国产精品视频| 国产日本欧美在线观看| 亚洲视频综合网| 欧美中文字幕在线视频| 亚洲自拍在线观看| 亚洲国产成人爱av在线播放| 91精品视频在线免费观看| 久久久av电影| 欧美成人sm免费视频| 91高潮在线观看| 日韩中文第一页| 精品国内亚洲在观看18黄| 亚洲美女福利视频网站| 色偷偷88888欧美精品久久久| 亚洲毛茸茸少妇高潮呻吟| 国产欧美精品一区二区| 久久久久久久久电影| 一本色道久久88精品综合| 日韩专区在线观看| 色爱av美腿丝袜综合粉嫩av| 亚洲偷熟乱区亚洲香蕉av| 欧美精品情趣视频| 国产精品久久久久久久久久尿| 成人黄色中文字幕| zzjj国产精品一区二区| 最近2019中文字幕大全第二页| 亚洲a中文字幕| 亚洲有声小说3d| 欧美一区二区影院| 九九热精品在线| 中文综合在线观看| 久久久国产一区二区三区| 九九热99久久久国产盗摄| 欧美精品一二区| 欧美韩日一区二区| 456亚洲影院| 欧美成人手机在线| 伊人久久大香线蕉av一区二区| 国产成人综合一区二区三区| 亚洲天堂av网| 黄色精品一区二区| 蜜臀久久99精品久久久久久宅男| 亚洲综合国产精品| 色妞欧美日韩在线| 欧美最顶级丰满的aⅴ艳星| www高清在线视频日韩欧美| 久久久精品电影| 日本道色综合久久影院| 亚洲第一福利网| 精品久久久久久久中文字幕| 国产精品h片在线播放| 亚洲性69xxxbbb| 日韩专区在线观看| 亚州av一区二区| 亚洲国产成人一区| 国产日韩在线看| 亚洲成av人影院在线观看| 精品国模在线视频| 亚洲精品影视在线观看| 亚洲高清久久网| 国产日韩在线免费| 欧美二区乱c黑人| 久久久999精品| 欧美高清电影在线看| 日本精品免费一区二区三区| 国产精品私拍pans大尺度在线| 亚洲免费电影在线观看| 亚洲国产精品小视频| 亚洲精品美女视频| 欧美日韩一区二区免费视频| 亚洲天堂网在线观看| 18性欧美xxxⅹ性满足| 国产精品久久久久国产a级| 国产日产亚洲精品| 午夜精品一区二区三区在线| 91亚洲精品在线| 国产精品久在线观看| 亚洲女人被黑人巨大进入| 久久九九国产精品怡红院| 亚洲欧美精品一区| 亚洲成av人乱码色午夜| 乱亲女秽乱长久久久| 欧美激情亚洲国产| 国产精品高潮粉嫩av| 久久精品国产亚洲7777| 欧美大胆a视频| 久久国产加勒比精品无码| 国产精品爽爽ⅴa在线观看| 一区二区国产精品视频| 久久久久久噜噜噜久久久精品| 欧美麻豆久久久久久中文| 久久国产精品久久国产精品| 国产在线播放不卡| 亚洲视频在线观看| 正在播放欧美一区| 欧美亚洲午夜视频在线观看| 国产一区二区三区在线| 国产精品毛片a∨一区二区三区|国| 国产亚洲精品成人av久久ww| 欧美在线视频网| 国产精品偷伦免费视频观看的| 亚洲激情视频在线观看| 亚洲国产精品电影在线观看| 亚洲久久久久久久久久| 中文字幕久热精品在线视频| 国产精品日韩久久久久| 国产成一区二区| 国产精品日韩av| 岛国av在线不卡| 精品av在线播放| 亚洲va欧美va国产综合剧情| 欧美激情第99页| 国产成人avxxxxx在线看| 亚洲欧美激情视频| 国产精品高潮在线| 亚洲视频专区在线| 一区二区三区视频免费在线观看| 欧洲s码亚洲m码精品一区| 久久夜色精品亚洲噜噜国产mv| 亚洲影视中文字幕| 国产精品毛片a∨一区二区三区|国| 国产+成+人+亚洲欧洲| 国产成人高潮免费观看精品| 日韩h在线观看| 欧美日韩国产在线看| 91精品美女在线| 亚洲欧美日韩成人| 一区二区三区日韩在线| 亚洲精品动漫100p| 91精品久久久久久久久中文字幕| 97国产精品视频人人做人人爱| 精品福利视频导航| 亚洲国语精品自产拍在线观看| 亚洲激情久久久| 高潮白浆女日韩av免费看| 日韩欧美国产激情| 欧美成人精品激情在线观看| 亚洲成人999| 精品久久久久国产| 成人激情免费在线| www.美女亚洲精品| 久久精品国产精品| 亚洲精品一区二区在线| 亚洲午夜精品久久久久久久久久久久| 日韩av免费在线看| 北条麻妃在线一区二区| 欧美在线视频播放| 91中文在线观看| 久久久精品国产网站| 大胆人体色综合| 国产亚洲精品美女| 日韩在线视频网站| 欧美黄色www| 国产精品青青在线观看爽香蕉| 欧美成人网在线| 亚洲综合日韩在线| 欧美成人午夜视频| 国自在线精品视频| 伊人久久精品视频| 久久精品亚洲94久久精品| 日本a级片电影一区二区|