본문 바로가기

개발/Swift

[Swift] Coredata 데이터 다루기(저장, 삭제, 불러오기)

context란 무엇인가?

대상 데이터에 대해서 변경사항을 조작, 추적하기 위한 공간이라고 해석되는데,

데이터를 저장소에 저장할 때 까지 context 메모리에 저장하고 있다고 합니다.

자세한 내용은 애플 공식문서를 참고해보면 좋습니다!

https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext

예제 예시

테이블 뷰컨트롤러에서 array를 생성합니다.

Todo List를 예시로 Entity는 TodoListModel이라고 정의했습니다.

// CoreData의 entity는 TodoListModel로 설정했다.
import UIKit
import CoreData //

class TodoViewController: TableViewController {
	//...
	let todoArray = [TodoListModel]()

	//...
}

참조할 context 데려오기 (전역변수)

context를 참조하려면 AppDelegate class에서 정의한 viewContext 를 참조해야합니다.

참조는 아래와 같이 진행합니다.

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

저장하기 예시

context에서 현재까지 변경된 내용을 저장하는 메소드를 만들어 보겠습니다.

func saveData() {
	do {
		try context.save() // 이 부분이 persistent store에 저장하는 코드!
	} catch {
		print("context 저장중 에러 발생 : \\(error)")
	}

원하는 entity 타입의 데이터 불러오기

func loadData() {
    // entity명이 TodoListModel 일 때의 요청
    let request = NSFetchRequest<TodoListModel> = TodoListModel.fetchRequest()
    do {
        try context.fetch(request) // 데이터 가져오기
    } catch {
        print("데이터 가져오기 에러 발생 : \\(error)")
    }
}

해당하는 데이터 삭제하기

func deleteData(data: TodoListModel) {
	context.delete(myArray[indexPath.row])
	self.myArray.remove(at: indexPath.row)
	saveData()
}

 

 

 

반응형