最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift利用CoreData實現(xiàn)一個上班簽到的小工具

 更新時間:2017年12月05日 10:24:55   作者:非典型技術宅  
這篇文章主要給大家介紹了關于Swift利用CoreData實現(xiàn)一個上班簽到小工具的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

我們在之前的兩篇里面實現(xiàn)了一個十分簡陋的通訊錄,而且都是通過系統(tǒng)默認的方式創(chuàng)建的CoreData??墒菍嶋H中哪里有那么好的事情嘛,要是忘記在創(chuàng)建工程的時候勾選了下面這個圖怎么辦?


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

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

1. CoreData Stack的作用

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

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

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

2.創(chuàng)建 CoreData Stack

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

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)建吧

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

  • Step1:搞一個NSPersistentContainer出來
  • Step2:創(chuàng)建CoreData Stack
  • Step3:別忘了還有一個NSManagedObjectContext
  • Step4:提供一個保存數(shù)據(jù)的方法
  • Step5:最后別忘記了在AppDelegate.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。但是這個跟生活中不符啊,注意 例如一個人下了很多訂單,訂單里面又包含了很多商品。


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

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


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

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

完成后的效果圖:


思維導圖如下:


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

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


設置完數(shù)據(jù)庫之后,按照如下操作:


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

所有的源代碼都在這里:

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

源碼下載:http://xiazai.jb51.net/201712/yuanma/CoreDataDemo(jb51.net).rar

總結

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

相關文章

  • swift 3.0中realm封裝類示例代碼

    swift 3.0中realm封裝類示例代碼

    這篇文章主要給大家介紹了關于swift 3.0中realm封裝類的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用swift具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • Swift 5.1 之類型轉換與模式匹配的教程詳解

    Swift 5.1 之類型轉換與模式匹配的教程詳解

    這篇文章主要介紹了Swift 5.1 之類型轉換與模式匹配的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Swift教程之函數(shù)詳解

    Swift教程之函數(shù)詳解

    這篇文章主要介紹了Swift教程之函數(shù)詳解,本文講解了函數(shù)的聲明與調(diào)用、函數(shù)的參數(shù)和返回值、函數(shù)參數(shù)名、函數(shù)類型等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • SwiftUI自定義導航的方法實例

    SwiftUI自定義導航的方法實例

    導航是我們平時經(jīng)常會遇到的一個需求,下面這篇文章主要給大家介紹了關于SwiftUI自定義導航的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Swift中switch語句區(qū)間和元組模式匹配

    Swift中switch語句區(qū)間和元組模式匹配

    這篇文章主要介紹了Swift中switch語句區(qū)間和元組模式匹配的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 淺談Swift編程中switch與fallthrough語句的使用

    淺談Swift編程中switch與fallthrough語句的使用

    這篇文章主要介紹了Swift編程中switch與fallthrough語句的使用,用于基本的流程控制,需要的朋友可以參考下
    2015-11-11
  • 用Swift構建一個簡單的iOS郵件應用的方法

    用Swift構建一個簡單的iOS郵件應用的方法

    這篇文章主要介紹了用Swift構建一個簡單的iOS郵件應用的方法,包括查看和標記已讀等基本的郵件應用功能,需要的朋友可以參考下
    2015-07-07
  • swift 3.0 正則表達式查找/替換字符的實現(xiàn)代碼

    swift 3.0 正則表達式查找/替換字符的實現(xiàn)代碼

    正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。本文重點給大家介紹swift 3.0 正則表達式查找/替換字符的實現(xiàn)代碼,需要的朋友參考下吧
    2017-08-08
  • Swift 3.0基礎學習之類與結構體

    Swift 3.0基礎學習之類與結構體

    最近在學swift 3.0,主要看的是蘋果的官方文檔,這里只是根據(jù)自己看官方文檔的理解所做的一些記錄,不是完整的翻譯,希望也對你有所幫助。下面這篇文章主要介紹了Swift 3.0基礎學習之類與結構體的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Swift中通過疊加UILabel實現(xiàn)混合進度條的方法

    Swift中通過疊加UILabel實現(xiàn)混合進度條的方法

    這篇文章主要介紹了Swift中通過疊加UILabel實現(xiàn)混合進度條的方法的相關資料,需要的朋友可以參考下
    2016-08-08

最新評論

拜泉县| 津市市| 措勤县| 蛟河市| 科技| 东山县| 延寿县| 从江县| 五大连池市| 怀集县| 会宁县| 玉树县| 芮城县| 铜陵市| 锡林郭勒盟| 晴隆县| 南昌县| 隆子县| 区。| 康马县| 陆川县| 武安市| 德昌县| 潼南县| 余干县| 奉化市| 玉环县| 斗六市| 舟山市| 辉县市| 东至县| 玉田县| 林芝县| 余姚市| 鄄城县| 屏边| 河南省| 阳新县| 榕江县| 子洲县| 工布江达县|