📱 iOS
[iOS/Swift] Core Data 를 사용한 todo list app 만들기
choidam
2020. 5. 1. 03:13
core data 를 사용한 todo list app 을 만들어보자❗️
참고 강의 자료 : https://www.youtube.com/watch?v=UM-O0lW3mc8
1. project setting
Use Core Data 를 체크하면 xcdatamodeld 파일이 디렉토리에 생성됨을 확인할 수 있다.
2. Data Setting
데이터 모델에 원하는 entity 와 attribute, type 을 지정한다
entity 가 하나의 구성 요소, 모델의 역할을 한다.
3. Save Data
import CoreData
var itemName: [NSManagedObject] = [] // todolist의 coredata 배열
func save(alert: UIAlertAction!){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Title", in: context)!
let theTitle = NSManagedObject(entity: entity, insertInto: context)
theTitle.setValue(titleTextField.text, forKey: "title") // attribute
do {
try context.save()
itemName.append(theTitle)
} catch {
print("There was a error in saving..")
}
self.tableView.reloadData()
}
core data 에 context 를 통해 간접적으로 접근한다.
4. Remove Data
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCell.EditingStyle.delete {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(itemName[indexPath.row])
itemName.remove(at: indexPath.row)
do{
try context.save()
}catch {
print("There was a error in deleting")
}
}
self.tableView.reloadData()
}
5. Load Data (Fetch)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Title")
do {
itemName = try context.fetch(fetchRequest)
} catch {
print("Error in loading data")
}
}
구현 화면
tnlqr