글 제목이 Core Foundation 으로 한정하고 있는 것 같지만, 정작 실체는 iOS(+ Cocoa Touch) 앱 개발과 OS X(+ Cocoa) 개발에 공통적인 글 링크를 정리하고 있는 글이다. :-) 과거 글은 Objective-C 위주로 쓰여져 있는 점에 주의하자.
NSFetchedResultsController 는 분명 유용하다. 하지만 몇 가지 문제가 있다. 대표적으로 동일한 Entity(Table)에 대해 여러 NSFetchedResultsController 를 만들면 문제가 발생 할 수도 있다. 두 가지 컨트롤러를 만들어 하나는 순차적으로, 하나는 특정 검색 결과만을 컨트롤 할 수 있다면 좋았을 것이다. 하지만 직접 해 보니 데이터를 제대로 읽지 못하는 등 여러가지 문제가 있었다. 만약 NSFetchedResultsController 를 이용하는 테이블에서 특정 내용 만을 검색해야 할 때는 어떻게 해야 할까?
CoreData를 명확하게 설명할 말은 찾기 힘든 것 같다. 쉽게 보면 '로컬 데이터베이스를 쉽게 쓰게 해 주는 도구' 로 설명 할 수도 있고 약간 넓게 'ORM 프레임워크'로 설명 할 수도 있다. 물론 이 모두 CoreData를 완벽하게 설명해 주는 말은 아니다. 어쨌든, CoreData를 사용하면 앱에서 사용하는 로컬 데이터베이스(sqlite3 기반)를 SQL 없이 다룰 수 있다. 참고로 좀 귀찮은 부분이 많다.