IOS CoreData 增删改查(swift)

一,Core Data介绍
1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象 - 关系映射(ORM)的功能,即能够将对象转化成数据,也能够保存在数据库中的数据还原成对象。

2,虽然其底层也是由类似于SQL的技术来实现,但我们不需要编写任何SQL语句,有点像Java的开发中的Hibernate的持久化框架
3,核心数据数据最终的存储类型可以是:SQLite的数据库,XML,二进制,内存里,或自定义数据类型。
4,与SQLite的区别:只能取出整个实体记录,然后分解,之后才能得到实体的某个属性。

废话不多说,直接进入正题,本文用的swift3.0。

二,Core Data的创建。

首先创建项目勾选使用核心数据,没勾选的就要进里面额外创建。完成后在  AppDelegate  中,会生成相关代码。

IOS CoreData 增删改查(swift)_第1张图片

点击项目的  xcdatamodeld  文件,在右边的数据模型编辑器的底部工具栏点击  Add Entity  添加实体。同时在属性栏中对实体命名进行修改,并在  属性  栏目中添加  名称属性。

IOS CoreData 增删改查(swift)_第2张图片

三,核心数据的使用

先在某人里面添加按钮,然后关联起来。

IOS CoreData 增删改查(swift)_第3张图片

首先引入

导入CoreData

 @IBAction func add(_ sender: Any) {
        //获取管理的数据上下文 对象
        let app = UIApplication.shared.delegate as! AppDelegate
        let context = app.persistentContainer.viewContext
        
        //创建Test对象
        let test = NSEntityDescription.insertNewObject(forEntityName: "Test",
                                                       into: context) as! Test
        //对象赋值
        test.id = 1
        test.name = "张三"
        
        //保存
        do {
            try context.save()
            print("保存成功!")
        } catch {
            fatalError("不能保存:\(error)")
        }
    }

 

@IBAction func deletes(_ sender: Any) {
        //获取管理的数据上下文 对象
        let app = UIApplication.shared.delegate as! AppDelegate
        let context = app.persistentContainer.viewContext
        
        //声明数据的请求
        let fetchRequest = NSFetchRequest(entityName:"Test")
        fetchRequest.fetchLimit = 10 //限定查询结果的数量
        fetchRequest.fetchOffset = 0 //查询的偏移量
        
        //设置查询条件
        let predicate = NSPredicate(format: "id= '1' ", "")
        fetchRequest.predicate = predicate
        
        //查询操作
        do {
            let fetchedObjects = try context.fetch(fetchRequest)
            
            //遍历查询的结果
            for info in fetchedObjects{
                //删除对象
                context.delete(info)
            }
            
            //重新保存-更新到数据库
            try! context.save()
            print("删除成功!")
        }
        catch {
            fatalError("查询失败:\(error)")
        }
    }


@IBAction func modify(_ sender: Any) {
        //获取管理的数据上下文 对象
        let app = UIApplication.shared.delegate as! AppDelegate
        let context = app.persistentContainer.viewContext
        
        //声明数据的请求
        let fetchRequest = NSFetchRequest(entityName:"Test")
        fetchRequest.fetchLimit = 10 //限定查询结果的数量
        fetchRequest.fetchOffset = 0 //查询的偏移量
        
        //设置查询条件
        let predicate = NSPredicate(format: "id= '1' ", "")
        fetchRequest.predicate = predicate
        
        //查询操作
        do {
            let fetchedObjects = try context.fetch(fetchRequest)
            
            //遍历查询的结果
            for info in fetchedObjects{
                //修改密码
                info.name = "李四"
                //重新保存
                try context.save()
                print("修改成功!")
            }
            
        }
        catch {
            fatalError("查询失败:\(error)")
        }
        
    }

 

@IBAction func check(_ sender: Any) {
        //获取管理的数据上下文 对象
        let app = UIApplication.shared.delegate as! AppDelegate
        let context = app.persistentContainer.viewContext
        
        //声明数据的请求
        let fetchRequest = NSFetchRequest(entityName:"Test")
        fetchRequest.fetchLimit = 10 //限定查询结果的数量
        fetchRequest.fetchOffset = 0 //查询的偏移量
        
        //设置查询条件
        let predicate = NSPredicate(format: "id= '1' ", "")
        fetchRequest.predicate = predicate
        
        //查询操作
        do {
            let fetchedObjects = try context.fetch(fetchRequest)
            
            //遍历查询的结果
            for info in fetchedObjects{
                print("id=\(info.id)")
                print("name=\(String(describing: info.name))")
            }
        }
        catch {
            fatalError("查询失败:\(error)")
        }
    }

点击增可以看到登录提示保存成功

IOS CoreData 增删改查(swift)_第4张图片

是否真的保存成功了呢?我们点查询看看。

IOS CoreData 增删改查(swift)_第5张图片

看来增查两个功能正常了

然后我们来看看删,点击删后

IOS CoreData 增删改查(swift)_第6张图片

提示删除成功,我们再点击查看看是否真的删除了。点击查询后没有日志出现,证明里面数据全删了。

再点几下增添加几个数据然后点改,再点查,看有没有修改成功。

IOS CoreData 增删改查(swift)_第7张图片

修改成功,对于数据库类型的操作来说,会了增删改查就算是会了,好了,本次教程就到这里。

源码点击打开链接

你可能感兴趣的:(IOS)