swift使用CoreData增删改查

在新建项目的时候勾选 Use Core Data,在项目地下就会出现 以 .xcdatamodeld`结尾的文件,然后再里面可以新建托管对象模型(也称为实体),实体属性之类的,百度一下就可以搜索到 还有在AppDelegate.swift文件也已经生成了一些属性和方法,通过调用这些方法来实现增删改查 新建好实体之后,就可以生成托管对象,可以直接通过xcode生成Editor>Create NSManagedObject Sub...`然后选择下数据模型,要生成的实体,语言之类的信息,就ok了,
代码部分

//给实体增加新的托管对象,as关键字之前执行完会返回NSManagedObject对象,用 as! 关键字转换成 book 对象方便之后的赋值
var object:Book = NSEntityDescription.insertNewObjectForEntityForName("Book", inManagedObjectContext: self.managedObjectContext) as! Book
//赋值
object.name = "aaaa"
object.author = "aaaaa"
//保存,这个执行来就保存到文件中了
self.saveContext()

//通过实体名获取请求对象
let request = NSFetchRequest(entityName: "Book")
//指定查询条件
let predicate = NSPredicate(format: "%K != %@", "name","aaa")
//设置请求对象查询条件
request.predicate = predicate
//查询,因为 executeFetchRequest 方法是一个 throwing函数 所以用 try? 关键字,如果抛出异常的话会返回 nil,成功的话会返回一个对象数组 //转换成book对象数组,方便之后显示
let result = (try? self.managedObjectContext.executeFetchRequest(request)) as! [Book]
print(result)
//输出 "Optional("aaaa")"
print(result[0].name)


//获取请求对象
let request = NSFetchRequest(entityName: "Book")
//设置查询条件
let predicate = NSPredicate(format: "%K != %@", "name","sadasd")
//设置请求查询条件
request.predicate = predicate
//查询
if let result = try? self.managedObjectContext.executeFetchRequest(request)
{
    //循环查询结果数组
    for resultTemp in result
    {
    //打印实体值
    print((resultTemp as! Book).author)
    //判断是否是正确的对象
    if resultTemp is NSManagedObject
        {
            //修改值
            resultTemp.setValue("root", forKey: "author")
        }
    }
}
//上面的只是修改,并买油保存,这里执行保存,就改变了持久化数据的内容了
self.saveContext()

let request = NSFetchRequest(entityName: "Book")
let predicate = NSPredicate(format: "%K != %@", "name","asdasd")
request.predicate = predicate
if let result = (try? self.managedObjectContext.executeFetchRequest(request)) as? [NSManagedObject]
{
    //输出查询结果,查看删除是否有效
    print(result)
    for resultValue in result
    {
        if resultValue is NSManagedObject
        {
            self.managedObjectContext.deleteObject(resultValue)
        }
    }
}
self.saveContext()

标签: swift

添加新评论