[Xcode 實際操做]7、文件與數據-(11)數據持久化存儲框架CoreData的使用:建立CoreData實體並插入數據

目錄:[Swift]Xcode實際操做html

本文將演示【CoreData】數據持久化存儲框架的使用。數據庫

點擊【Create a new Xcode project】建立一個新的項目swift

->【Single View App】選擇建立一個簡單的單視圖應用->【Next】緩存

【Product Name】:CoreDataProjectapp

勾選使用【CoreData】數據持久化存儲框架的複選框,在項目中引入該框架。框架

數據持久化存儲框架【CoreData】提供了對象關係的映射功能,編輯器

它可以將對象轉化爲數據,也可以將保存在數據庫中的數據,還原成對象ide

->【Next】->選擇項目存放目錄->【Create】post

在項目導航區,點擊打開配置管理文件【CoreDataProject.xcdatamodeId】ui

點擊底部的【+(Add Entity)】添加按鈕,添加一個實體對象。

在實體列表【ENTITIES】列表中,選擇剛剛建立的實體,並給實體從新命名:【User】

在【Attribute】屬性設置區,點擊【+】圖標,爲實體添加一個屬性。

而後輸入屬性的名稱和選擇屬性的類型

【Attribute】:userName

【Type】:String

點擊【+】圖標,爲實體添加第二個屬性。

而後輸入屬性的名稱和選擇屬性的類型

【Attribute】:password

【Type】:String

已經建立了兩個屬性。點擊右下角【Editor Style】編輯器樣式圖標,切換實體編輯器的樣式。

在實體編輯器的圖形模式下,若是項目中有多個實體,

能夠方便的查看實體之間的關係。

接着點擊頂部的編輯菜單【Editor】->【CreateNSManagedObject Subclass】建立管理對象子類

在數據模型列表中,保持默認選擇的須要管理的數據模型【CoreDataProject】

->【Next】在實體列表中,選擇須要生成掛曆對象子類的實體模型:【User】

->【Next】保持默認的存儲位置,點擊建立【Create】按鈕,完成實體類的建立操做。

在代碼中,能夠看出增長了一個擴展,該擴展擁有和實體相同的屬性,

在項目導航區,打開並查看實體類和實體之間的關聯文件:

【User+CoreDataClass.swift】

【User+CoreDataProperties.swift】

自動建立的代碼文件存在多個錯誤,能夠點擊【編譯並運行按鈕】

此時會出現一些錯誤提示,點擊打開以前建立的數據模型文件:

【User+CoreDataClass.swift】

【User+CoreDataProperties.swift】

如今依次修復出現的幾個問題。點擊右上角,打開檢查器面板,

點擊【顯示數據模型檢查器】圖標,進入檢查器面板

設置【Codegen】:Manul/None

點擊左側的【顯示問題導航器圖標】,顯示應用程序編譯錯誤列表。

須要清除由系自動生成的類文件。

選擇錯誤文件所在的文件夾:/User/strengthen/Library/Developer/Xcode/DerivedData/

【Comamand】+【C】複製所選的內容

【Comamand】+【Tab】切換至已經打開的文件夾窗口

【Comamand】+【Shift】+【G】打開【前往文件夾】窗口

【Comamand】+【V】將複製的文件路徑粘貼到彈出窗口的輸入框。

->點擊【前往】,跳轉到指定的文件夾,該文件夾保存了全部在編譯項目時所生成的緩存文件。

【Comamand】+【A】全選此處的全部文件夾。

【Comamand】+【Deleete】

能夠清除此處的緩存,當再次編譯項目時還會產生新的緩存文件。

對於大型項目來講,清除此處的緩存,下一次的編譯會花費更多時間,以生成新的緩存。

關閉文件夾,並返回原來的開發界面。

依次點擊菜單欄【Product】->【Build】->項目已經能夠正常經過編譯。

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】

選擇開始編碼,實現數據的持久化功能。

 1 import UIKit
 2 //引入數據持久化存儲框架【CoreData】
 3 import CoreData
 4 
 5 class ViewController: UIViewController {
 6 
 7     override func viewDidLoad() {
 8         super.viewDidLoad()
 9         // Do any additional setup after loading the view, typically from a nib.
10         
11         //得到當前程序的應用代理
12         let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
13         //經過應用代理對象,得到管理對象上下文
14         let managedObjectContext = appDelegate.persistentContainer.viewContext
15         
16         //經過管理對象上下文,插入一條實體數據
17         let newUser = NSEntityDescription.insertNewObject(forEntityName: "User", 
18                         into: managedObjectContext) as! User
19         
20         //設置實體的用戶名屬性的內容
21         newUser.userName = "John"
22         //設置實體的密碼屬性的內容
23         newUser.password = "123456"
24         
25         //添加一條異常捕捉語句,用於執行數據的插入操做
26         do
27         {
28             //使用try語句,執行管理對象上下文的存儲操做,插入實體對象
29             try managedObjectContext.save()
30             //在控制檯打印輸出日誌
31             print("Success to save data.")
32         }
33         catch
34         {
35             print("Failed to save data.")
36         }
37     }
38 }
相關文章
相關標籤/搜索