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)
相关文章
相关标签/搜索