開發工具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)")
}
}
以上就實現了一個簡單的數據持久化, 但是這個持久化存在小一些隱患. 下節, 就來談談隱患. 是他更健壯.