티스토리 뷰

반응형



안녕하세요. iOS앱의 사용자 로컬데이터를 다루는 방법은 UserDefaults, CoreData, Realm등 다양한데요.
오늘은 이중에 iOS의 CoreData framework를 이용해서 (Core Data Model 파일)xcdatamodeld 파일을 생성 후 모델을 만들어 사용자 로컬에 데이터를 저장하는 과정을 돌아보도록 하겠습니다.


iOS CoreData, Xocde에 xcdatamodeld 파일 및 모델 추가 후 로컬데이터 저장하는 방법
1) Xcode에 xcdatamodeld 파일 생성하기

먼저 Xcode를 실행해주세요. 그다음 command + N 단축키를 눌러서 파일 생성 페이지를 진입합니다. 여기에서 Core Data 섹션의 Data Model을 선택하고 [Next] 를 눌러주세요.


2) xcdatamodeld 파일에 entities, attributes 추가 후 모델 구성하기

생성한 xcdatamodeld 파일를 선택 후, 하단의 [Add Entity]를 눌러서 entity를 생성해주세요. 그리고, 우측의 Class Name, Codegen 도 위와 같이 수정해주세요.

entity를 생성하셨다면, 이어서 생성한 entity를 클릭 후, Attributes 섹션 하단의 + 버튼을 눌러서 Attribute를 추가해줍니다.
이름과 Type도 해당 Attribute의 타입에 맞게 수정을 해줍니다. 그 외에도 우측을 보시면 해당 변수 설정에 맞게 Optional 여부, default value 설정 등을 할 수 있습니다.

entity, attributes 구성을 완료했다면 이어서 Xcode 상단 메뉴 > Editor > Create NSManagedObject Subclass... 를 선택해주세요.

메뉴를 선택하셨다면 위와 같은 파일들이 생기는 것을 확인 가능합니다. 생성된 파일을 선택해서 원래 의도했던 entity, attributes 이름으로 구성되어있는지 확인해주세요. 다음은 CoreData 모델을 수정하고 저장할때 사용할 NSPersistentContainer를 생성할 차례입니다.


3) NSPersistentContainer 생성하기

위 내용은 애플 개발자 공식 CoreData 문서 내용 중 일부입니다. 문서에 따르면, model, context, store coordinator를 동시적으로 다루기 위해서 NSPersistentContainer를 사용해야한다고 나와있습니다. 이제 CoreData 모델 수정 및 저장을 하기 위해 NSPersistentContainer를 추가해보겠습니다.
NSPersistentContainer는 개발자가 원하는 위치에 추가를 해서 사용하면 되는데, 싱글턴객체나 최상위 View layer 등 로컬데이터 저장 및 접근이 필요한 곳에서 언제든지 접근 가능한 위치에 구현해 주는것이 좋습니다. 이번 포스팅에서는 임의의 싱글턴 클래스 내부에 NSPersistentContainer를 생성해보겠습니다.

14 ~ 22행) NSPersistentContainer를 생성한 모습입니다. NSPersistentContainer 생성자의 name 레이블에는 xcdatamodeld 파일 명을 넣어주면 되는데, 저같은 경우는 임의로 entity, xcdatamodeld 파일명을 동일하게 설정했기때문에 entityName을 넣어서 사용했습니다.


4) CoreData 로컬데이터 쓰기, 저장방법

45행) CoreData의 entity 모델을 사용하기 위해 접근하는게 persistentContainer.viewContext입니다. persistentContainer는 NSManagedObjectContext를 반환하는데 NSManagedObjectContext는 관리객체의 변화를 추적하고, 관리하기 위한 객체 공간이라고 합니다.
46 ~ 53행) context가 변동된 내용이 있는 경우에 저장을 하는 코드입니다. 이렇게 저장된 모델은 로컬에 저장되어 사용자가 앱을 재실행해도 남아있게 됩니다.

59 ~ 63행) viewContext에 존재하는 model을 fetch하는 과정입니다.
64 ~ 75행) 만약 모델이 존재하지 않다면 모델을 생성하여 반환합니다.(70행)
기존에 존재하던 모델이 있다면 반환합니다.(72행)
viewContext를 통해 기존 로컬 데이터를 fetch 하는 과정에 에러가 발생하면 catch 문이 실행됩니다.

CoreData 로컬데이터를 저장하는 메서드입니다. 앞서 구현한 globalSettingModel()을 옵셔널 체이닝으로 접근하여 setValue를 호출합니다. 첫번째 인자에는 설정할 값, 두번째 인자에는 attribute 이름(키)를 넣어 줍니다. 이후, saveContext() 메서드를 실행하면 저장을 완료할 수 있습니다.


5) CoreData 로컬데이터 읽기 방법

마지막으로 CoreData 로컬데이터 읽는 방법입니다. globalSettingModel()의 읽기 원하는 attributes를 선택해서 반환하면 됩니다.


오늘은 CoreData framework를 활용하여 Core Data 파일 및 entity, attributes 생성, 로컬데이터를 생성하고 쓰기, 읽기 하는 방법을 알아봤습니다. 아래에 CoreData를 사용한 로컬데이터 읽기, 쓰기 동작 확인영상 링크 참고 바랍니다. 관련 의견이나 질문 언제든 댓글 환영합니다. 감사합니다.
https://tv.kakao.com/channel/3287479/cliplink/432396320

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함