目錄:[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 }