开发工具Xcode8
首先创建一个工程, 并完成以下功能, 弹出一个alter, 并把输入框的值复制个cell
让后当双击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)")
}
}
以上就实现了一个简单的数据持久化, 但是这个持久化存在小一些隐患. 下节, 就来谈谈隐患. 是他更健壮.
网友评论