Save data
บันทึกให้ด้วยสิ
ถ้าเราไม่ทำให้บันทึกค่าเก็บไว้ปกติ ถ้าเรา kill แอพทิ้งแล้วรันใหม่ข้อมูลเราจะหายไป
ขั้นแรกเราต้องทำให้สามารถ encode และ decode คลาส Todo ของเราให้ได้ก่อน เพราะเราจะได้แปลงเป็น data ที่จะบันทึกได้ต่อไป
วิธีการก็แสนจะง่าย ให้เราเพิ่ม conform Codable ที่ Todo และ TodoItem เป็นอันเสร็จ
import Foundation
class Todo: Codable {
private var items = [TodoItem]()
var totalItems: Int {
return items.count
}
func item(at index: Int) -> TodoItem {
return items[index]
}
func add(item: TodoItem) {
items.insert(item, at: 0)
}
func remove(at index: Int) {
items.remove(at: index)
}
func index(of item: TodoItem) -> Int? {
return items.index { $0 === item }
}
}บันทึกลงไฟล์
เราใช้ FileManager ในการสร้าง url ไปยังไฟล์ที่เรากำหนด ใช้ PropertyListEncoder ในการ encode ข้อมูลของเรา
เสร็จแล้วให้เพิ่มเรียก saveTodo() ที่ delegate, dataSource method ที่ใช้ในการ Add, Edit และ Delete TodoItem และ todoItemTableViewCellDidTapCheckboxButton
อ่านจากไฟล์
เหมือนบันทึกลงไฟล์ แต่คราวนี้ใช้ PropertyListDecoder ในการ decode และถ้าไม่มีไฟล์ให้อ่านเราจะข้ามไป
เพิ่มโค้ดให้อ่านไฟล์ตอนโหลด
จากนั้นลองรันแอพ เพิ่มรายการ kill แอพ แล้วเปิดดูใหม่

Refactor Code หน่อยยย
จะเห็นว่าโค้ดที่ใช้หา Path ของไฟล์ที่กำหนดมันใช้ซ้ำกัน เราก็สร้างฟังก์ชั่นใหม่มาครอบดีกว่า
Last updated