IOS CoreData 簡單使用CURD

iOS在CoreData中簡單封裝了SQLite,讓開發者不須要寫sql語句就可使用SQLite進行CURD操做。sql

要使用CoreData切記在建立項目的時候選中CoreData選項。數據庫

這裏寫圖片描述

在操做SQLite的時候最終要的是得到一個NSManagedObjectContext對象,這個對象在AppDelegate中能夠得到,而AppDelegate實例能夠在UIApplication中得到,swift得到NSManagedObjectContext對象的實現能夠這樣寫swift

context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

SQLite中的每一條數據封裝在NSManagedObject中,每一條數據都是一個NSManagedObject示例數組

下面的示例中須要使用一張SQLite數據表,在Xcode中建立一張表的實現:xcode

  1. 首先,在xcode文件導航中選中該文件,前面的SQLiteDemo是項目名稱這裏寫圖片描述
  2. 而後在打開的界面的下方點擊Add Entity按鈕來添加一張數據表這裏寫圖片描述
  3. Xcode中的一個Entity對應的就是一張數據表,能夠對數據表進行命名,可是必須是以大寫字母開頭,不然XCode會發出警告我這裏使用User來演示這裏寫圖片描述
  4. 而後點擊Attribute中的+來添加字段,這裏添加name和age字段進行測試這裏寫圖片描述
  5. 至此,建立數據表完成。

添加數據

要想SQLite中添加數據,首先要得到NSManagedObjectContext實例,在上文中已經有寫,在之後就再也不贅述,請自行獲取。
而後須要一個對象來封裝咱們要添加的數據,這就是以前說的NSManagedObject對象。能夠用這種方式建立一個對象bash

var row: AnyObject = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: context)

insertNewObjectForEntityForName方法的第一個參數是要操做的Entity名,也就是數據表名,第二個字段是數據庫上下文(NSManagedObjectContext實例)。markdown

人後經過KVO的方式像這個對象傳入咱們的數據,我這裏的數據是從UITextField中得到的。測試

row.setValue(nameField.text, forKey: "name")
row.setValue(ageField.text.toInt(), forKey: "age")

而後須要把該對象保存到SQLite中spa

context.save(nil)//保存數據

save方法的參數是一個NSError,這裏傳入nil,具體處理方法再也不贅述,後文一樣不作處理。code

查詢數據

進行數據查詢,須要一個NSFetchRequest實例進行查詢操做,因此先穿件一個NSFetchRequest實例,其中的參數爲Entity名

var query = NSFetchRequest(entityName: "User")

而後用數據庫上下文進行查詢,將結果保存到名爲data的數組中,其類型爲AnyObject

var data = context.executeFetchRequest(query, error:nil)!

而後,能夠經過KVO的方式從中取出數據

var row: (AnyObject) = data[i]
var name: AnyObject = row.valueForKey("name")!
var age: AnyObject = row.valueForKey("age")!

更新數據

更新數據須要先得到數據實例,這裏使用上文查詢數據中得到的data數組中的數據。

首先設置更新的數據

data[0].setValue(nameField.text, forKey: "name")
data[0].setValue(ageField.text.toInt(), forKey: "age")

而後把更新完的數據實例進行保存便可,此時的數據庫上下文要從該數據對象中得到

data[0].managedObjectContext?.save(nil)//更新數據

刪除數據

刪除數據一樣須要得到數據對象,一樣使用查詢到的data數組中的數據,調用數據庫上下文中的deleteObject方法,傳入要刪除的對象,而後保存數據庫上下文就能夠刪除數據。

//刪除數據操做
context.deleteObject(data[0] as! NSManagedObject)
//刪除完後須要把結果保存到數據庫
context.save(nil)
相關文章
相關標籤/搜索