美文网首页iOS Developer
CoreData - 数据的存储与读取(1)

CoreData - 数据的存储与读取(1)

作者: 冰三尺 | 来源:发表于2017-08-05 15:26 被阅读32次

    开发工具Xcode8
    首先创建一个工程, 并完成以下功能, 弹出一个alter, 并把输入框的值复制个cell

    Jietu20170805-151554-HD.gif

    让后当双击home, 把进成杀掉时, 再重启程序, 保存在cell上的值不见了. 接下来就是要使用CoreData把数据保存下来.

    首先, 需要新建一个实体Entity, 你可以把这个东西暂且理解为一个Class.
    第一步, 选中HitList.xcdatamodeld文件
    第二步, 点击下面的Add Entity
    第三部, 修改实体的名称, 并添加一个属性
    像下图这样


    屏幕快照 2017-08-05 下午3.20.07.jpg

    下面来实现保存数据的方法

    func save(name: String) {
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
          return
        }
    
        let managedContext = appDelegate.persistentContainer.viewContext
    
        let entity = NSEntityDescription.entity(forEntityName: "Person",
                                                in: managedContext)!
    
        let person = NSManagedObject(entity: entity,
                                     insertInto: managedContext)
    
        person.setValue(name, forKeyPath: "name")
    
        do {
          try managedContext.save()
          people.append(person)
        } catch let error as NSError {
          print("Could not save. \(error), \(error.userInfo)")
        }
      }
    

    通过实现上面的方法, 就实现了数据的持久化保存.

    然后接下来我们在viewWillAppear的时候拿到数据要拿到数据

      override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
          return
        }
    
        let managedContext = appDelegate.persistentContainer.viewContext
    
        let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person")
        do {
          people = try managedContext.fetch(fetchRequest)
        print(person.value(forKey: "name")!)
        } catch let error as NSError {
          print("Could not fetch. \(error), \(error.userInfo)")
        }
      }
    

    以上就实现了一个简单的数据持久化, 但是这个持久化存在小一些隐患. 下节, 就来谈谈隐患. 是他更健壮.

    相关文章

      网友评论

        本文标题:CoreData - 数据的存储与读取(1)

        本文链接:https://www.haomeiwen.com/subject/iliplxtx.html