加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift使用CoreData

发布时间:2020-12-14 07:02:28 所属栏目:百科 来源:网络整理
导读:新建工程 建表并生成文件 使用并保存数据 获取数据 删除数据 更新数据 新建工程 新建一个swift工程,勾选Use Core Data 建表并生成文件 找到工程中的(项目名.xcdatamodeld),新建Entity 然后选中(项目名.xcdatamodeld),选择Editor-Create NSmanagedObject S
  • 新建工程
  • 建表并生成文件
  • 使用并保存数据
  • 获取数据
  • 删除数据
  • 更新数据

新建工程

新建一个swift工程,勾选Use Core Data

建表并生成文件

找到工程中的(项目名.xcdatamodeld),新建Entity

然后选中(项目名.xcdatamodeld),选择Editor->Create NSmanagedObject Subclass…
选择你需要使用的库,点击下一步

选择你需要使用的表,点击下一步

选择存放位置和编码语言

点击完成,工程中会增加两个文件

去掉可选类型?

使用并保存数据

导入相关库

import CoreData

实例化对象

var resultMode:ResultMode!

保存操作

//缓存池
let buffer = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
//设置数据
resultMode = NSEntityDescription.insertNewObjectForEntityForName("ResultMode",inManagedObjectContext: buffer) as! ResultMode
        resultMode.name = "name"
        resultMode.address = "address"
        resultMode.content = "content"
        resultMode.image = UIImagePNGRepresentation(image)!//转换图片格式
//保存
do{
    try buffer.save()
  }catch{
    print(error)
    return
}

获取数据

导入相关库

import CoreData

初始一个空数组

var resultMode:[ResultMode] = []

添加NSFetchedResultsControllerDelegate代理
初始化NSFetchedResultsController

var frc:NSFetchedResultsController!

获取数据

//缓存池
let buffer = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
        //使用NSFetchRequest获取数据
        let request = NSFetchRequest(entityName: "ResultMode")
        let sd = NSSortDescriptor(key: "name",ascending: true)//排序
        request.sortDescriptors = [sd]

        frc = NSFetchedResultsController(fetchRequest: request,managedObjectContext: buffer,sectionNameKeyPath: nil,cacheName: nil)
        frc.delegate = self
        //获取数据
        do{
            try frc.performFetch()
            resultMode = frc.fetchedObjects as! [ResultMode]
        }catch{
            print(error)
        }

删除数据

let buffer = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

            let result = frc.objectAtIndexPath(indexPath) as! ResultMode
            buffer.deleteObject(result)

            do{
                try buffer.save()
            }catch{
                print(error)
            }

更新数据

更新数据在获取数据的基础上,把该数据的值修改,再进行save就可以了


写给自己的学习笔记

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读