콘텐츠로 건너뛰기
Home » managed object context

managed object context

코어데이터의 기본 개념

코어데이터에 대한 개념 정리를 좀 해보자.

코어데이터는 고정된 저장소와 메모리상의 스크래치 보드를 연결하여, 마치 어떤 데이터 클래스 객체들의 배열을 다루는 코드로 데이터를 생성, 편집, 삭제하며 저장할 수 있는 기능을 제공하는 프레임워크이다. 코어 데이터 내에서 사용되는 데이터 클래스들은 각각의 프로퍼티에 대해 확장된 KVC/KVO를 사용하는 것으로 최대한 유연하게 동작하기 때문에 사실상 개별 데이터의 클래스에 구애받지 않는 범용 API들을 설계해두고 있다.

더 보기 »코어데이터의 기본 개념

[Cocoa] 코어데이터 스택을 수동으로 세팅하기

코어데이터 코어데이터 코어데이터. 쉽지도 않은 내용인데 이 블로그에서 최근에 코어데이터를 지긋지긋하게 많이도 다루는 것 같다. ㅠㅡㅠ 하지만 언젠가는 피가되고 살이될 코어데이터에 대한 내용이다.
이미 “간단한” 저장은 아주 손쉽게 Keyed Archiver를 사용하여 인코딩한 객체를 파일로 바로 저장하는 것은 살펴보았다. 하지만 만약, 저장한 주소록에 사람이 수백만명이라면 엄청나게 많은 데이터가 앱이 실행될 때 한번에 메모리로 로드되어 올라갈 것이다. (이것이 아카이빙으로 내용을 저장할 때의 한계이다. 많은 데이터는 결국 한 번에 로딩해서 안고 있어야 하는 부담이 있다.)
하지만 코어데이터는 굉장히 빠르게 영구저장소를 계속해서 액세스하고, 자동으로 차등저장 및 로딩을 지원하기 때문에 데이터세트가 어느 정도까지는 커져도 괜찮다. (적어도 나는 그렇게 알고 있다.)
iOS라면 UIManagedDocument를 사용하면 문서파일 자체를 코어데이터 영구저장소 파일(데이터베이스 파일)로 바로 사용할 수 있다. 이 내용은 이미 살펴본 바가 있는데, 문제는 NSManagedDocument 라는 것은 아직 공식적으로 존재하지 않는 클래스이다. (아 이런…) 결국 코코아 앱을 시작할 때 코어데이터를 적용해주지 않으면… 콸콸콸콸…

update: macOS에서는 NSPersistentDocument 라는 클래스가 있어서 코어데이터와 NSDocument를 긴밀하게 통합하여 사용할 수 있다.

더 보기 »[Cocoa] 코어데이터 스택을 수동으로 세팅하기