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
要想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)