Top

[효율적인 데이터 관리를 위한]
iOS 코어 데이터

  • 원서명Core Data for iOS: Developing Data-Driven Applications for the iPad, iPhone, and iPod touch (ISBN 9780321670427)
  • 지은이팀 이스테드, 톰 해링턴
  • 옮긴이정승원
  • ISBN : 9788960776104
  • 30,000원
  • 2014년 09월 30일 펴냄
  • 페이퍼백 | 408쪽 | 188*235mm
  • 시리즈 : 모바일 프로그래밍

책 소개

요약

아이폰, 아이패드에서 데이터를 관리할 때는 속도, 안정성, CPU 부하, 배터리 소모 등 많은 부분을 고려해야 한다. SQL이나 파일 등 데이터를 관리하는 방법이 많지만, 그중에서도 애플이 직접 제공하는 데이터 관리 레이어 ‘코어 데이터’를 사용하면 앞에 열거한 모든 목적을 쉽게 달성할 수 있다. 개발자는 데이터 관리라는 본질에만 집중하면 된다. 경험 많은 iOS 개발자 두 명이 코어 데이터를 효과적으로 다루는 방법을 설명하는 이 책을 통해 코어 데이터를 정복하기 위한 첫걸음을 내딛을 수 있다.

이 책에서 다루는 내용

코어 데이터의 기능, 클래스, 상호 작용 이해

MVC 기반 iOS 앱 개발에 코어 데이터를 사용하는 방법

관계형 데이터를 객체 모델에 매핑하고, 엑스코드 4 데이터 모델러에서 빌드하는 방법

관리 객체를 다루는 방법과 UITableView에 표시하는 방법

프리디케이트를 생성해 숫자, 데이터, 객체에 매칭하는 방법

앱의 데이터 모델 버전 간 호환성 유지

뷰 콘트롤러 간 관리 객체 콘텍스트 추적

코어 데이터의 자동 실행 취소 기능

추상 엔티티, 엔티티 상속, 다중 뷰 콘트롤러를 사용한 앱 개발

iOS 디바이스의 한정적 메모리를 위한 최적화

일반적인 코어 데이터 문제점 분석과 해결

이 책의 대상 독자

이 책은 중급에서 고급 iOS 개발자에 초점을 맞추며, 독자가 iOS 애플리케이션 프로그래밍 지식이 어느 정도 있을 것이라 가정한다. 특히 애플의 기본개발 도구(엑스코드), 오브젝티브C 언어, 코코아 터치(Cocoa Touch) 프레임워크를 사용하는 데 어려움을 느끼지 않아야 한다. 이 책에 포함된 대부분의 정보는 iOS 디바이스와 맥 OS X(10.4 이상)에 모두 적용되는 일반적인 코어 데이터를 다루지만, 데스크탑 환경에서 코어 데이터를 다뤄본 적이 있다는 가정은 하지 않는다. iOS에서 코어 데이터를 무리 없이 사용할 수 있게 되면, 동일한 도구(엑스코드의 데이터 모델러)와 거의 비슷한 코드(NSFetchedResultsController는 iOS 전용이다)로 데스크탑용 코어 데이터 애플리케이션을 만들 수 있다. iOS 애플리케이션을 개발한다면 데이터를 보존해야 할 필요가 있을 것이다. 매우 단순한 데이터 저장 이상의 기능이 필요한 경우에 파일 기반이나 로우 레벨 SQLite 기반 저장 레이어를 직접 만드는 것보다는 코어 데이터를 사용하는 편이 쉽다. 코어 데이터로 작업해야 한다면 이 책을 읽어야 한다. 코어 데이터를 사용해본 적이 없다면 이 책을 통해서 어디서부터 시작해야 할지 배우게 된다. 프레임워크의기본과 iOS에만 있는 NSFetchedResultsController를 마치고, 코어 데이터 기반 애플리케이션을 만들어보고 나서 성능 관련 팁과 문제 해결 방법을 배운다. 코어 데이터를 사용해본 경험이 있고, 많은 모델 객체를 사용할 때 도무지 앱이 죽는 이유를 모르겠다거나, 특정 상황에서 성능 문제가 왜 생기는지 알고 싶을 때 이 책에서 해답을 얻을 수 있다. 이 책은 프레임 워크의 기본 사항에서 발생하는 문제를 명확히 설명하고, 이런 문제를 해결하는 데 애플의 개발 도구를 사용하는 방법을 알려준다.

이 책의 구성

이 책은 애플의 코어 데이터 프레임워크를 iOS 디바이스에 사용하는 방법을 포괄적으로 다룬다. 기초적인 내용부터 시작해 고급 기술을 배우고, 실제로 사용되는 예제를 알아본다. 이 책의 많은 장은 두 부분으로 나뉜다. 관련정보를 배우는 것으로 시작하고, 샘플 프로젝트를 통해 앞에서 배운 내용을 확인한다. 10장에서는, 코어 데이터에 기반을 둔 메모 애플리케이션을 처음부터 끝까지 만들어본다. 코어 데이터가 어떤 일들을 하는지 당장 궁금하다면 10장에서 읽기를 시작한 후 처음으로 돌아오는 것도 좋다.

1부, 소개 애플의 코어 데이터 프레임워크는 애플리케이션 데이터를 저장하기 위한 강력하고 통합된 솔루션이다. 이 책은 아이폰 SDK 3.0 이상 버전의 iOS에서 이 프레임워크를 사용하는 방법과 포괄적인 레퍼런스를 제공한다. 코어 데이터 기본뿐 아니라 객체 모델링과 데이터 저장, 엑스코드의 데이터 모델링 도구를 사용해 객체 모델을 만드는 방법 등도 배운다.

1장, iOS 디바이스 코어 데이터 개요 1장은 iOS 애플리케이션 개발을 위한 MVC 패턴으로서의 코어 데이터를 소개한다. 웹 개발을 위한 엔터프라이즈 객체 프레임워크(Enterprise Objects Framework)로서 코어 데이터의 간략한 역사와 코어 데이터가 유용한 이유를 알아본다. 코어 데이터를 데스크탑에 사용하는 것과 iOS에 사용하는 것에 차이점이 크지 않은 이유와 iOS의 바인딩(Binding) 지원이 부족한 점도 배운다. 코어 데이터를 사용해 현재 공개돼 있는 iOS 애플리케이션을 열거하는 것으로 개요를 마친다. 머니웰(MoneyWell), Calcuccino, 어소시에이티드 프레스(Associated Press) 애플리케이션을 여기서 소개한다.

2장, 코어 데이터 기초 1장을 통해 코어 데이터의 개요를 충분히 습득했으니 2장에서는 코어 데이터의 더 깊숙한 부분까지 들어가 주요 기능을 알아본다. 관리 객체 콘텍스트와 관리 객체의 상호 작용과 영구 저장(Persistent Store)을 여기서 배운다. 또한 프레임워크 클래스를 소개하고, 대개 기본 프레임워크 클래스를 상속받을 필요 없이 매우 적은 코드로 구현할 수 있는 훌륭한 기능을 설명한다. 뒤이어 코어 데이터를 사용해 애플리케이션을 작성하는 과정을 설명한다. 애플의 코어 데이터 iOS 애플리케이션용 엑스코드 템플릿 프로젝트가 어떻게 동작하는지 알아보며 2장을 마친다.

3장, 데이터 모델링 3장에서는 데이터 모델링의 기본적인 내용을 소개한다. 코어 데이터가 데이터베이스 자체가 아니라는 점을 수차례 강조했다. 대신 관계형 데이터베이스 기술(예를 들어 객체 모델 디자인에 적용되는 데이터 정규화)에 대해 설명한다. 또한 관계형 데이터베이스에 저장된 데이터를 객체지향 프로그래밍에 사용할 수 있도록 관계형 객체 모델에 어떻게 매핑되는지 알아보고, 엑스코드의 데이터 모델 에디터(Data Model Editor)를 사용해 코어 데이터에 객체 모델이 정의되는 방법을 소개하며 3장을 마친다.

2부, 코어 데이터로 작업 2부에서는 iOS에 코어 데이터를 활용하길 원하는 애플리케이션에 적용되는 주제에 대해 집중적으로 다룬다. 프레임워크의 각 측면이나 관련 기술은 개별적인 장으로 나눴으므로, 순서대로 읽어가며 점진적으로 습득할 수도 있고, 관심 있는 주제를 골라서 읽을 수도 있다. 각 장은 두 부분으로 구분된다. 처음에는 특정 기능을 소개하고, 왜, 그리고 언제 이 기능이 유용한지 알려준다. 두 번째 부분에서는 관련 클래스와 메소드를 소개한다. 더 복잡한 기능을 만들기 이전에 간단한 애플리케이션에 기본적인 기능을 추가하는 튜토리얼 형식을 취한다. 튜토리얼 섹션은 실습을 통해 배울 수 있게 하는 것이 목적이지만, 이런 방법을 통해 독자 스스로 애플리케이션을 개발할 때 동일한 기술을 사용하는 데 어려움을 느끼지 않게 된다.

4장, 기본적인 저장과 불러오기 UITableView로 관리 객체를 표시하는 간단한 아이폰 애플리케이션을 만드는 과정을 보여준다. 관리 객체 콘텍스트가 무엇인지, 그리고 기반데이터와 어떻게 연결되는지 배운다. 코어 데이터를 효율적으로 사용하는 데 관리 객체 콘텍스트가 필수적인 이유를 이해하게 된다. 콘텍스트가 무엇인지, 어떻게 사용하는지, 콘텍스트가 어디에서 ‘왔는지’와 서로 상호 작용하는 방법도 배운다. 4장의 샘플 프로젝트는 간단한 추가(Add) 버튼으로 불러온 객체를 추가하고 테이블 뷰에 추가한다. 개발의 용이함을 위해 모든 객체는 임의로 생성된 정보와 함께 미리 생성돼있다.

5장, NSFetchedResultsController 사용 iOS에만 있는 객체인 불러오기 결과 컨트롤러(Fetched Results Controller)를 활용해서 데이터를 불러오고 테이블 뷰에 객체를 표시하는 방법을 배운다. 또한 iOS에서 메모리 관리가 중요한 이유와 NSFetchedResultsController가 어떻게 메모리 내부에 최소한의 객체를 자동으로 유지하는지도 알아본다.

6장, 관리 객체로 작업 데이터 검증 같은 NSManagedObject가 제공하는 기능을 소개한다. 대개 NSManagedObject를 서브클래싱할 필요는 없지만, 6장은 왜, 그리고 언제 그렇게 해야 하는지 설명한다. 관리 객체의 라이프 사이클을 배우고 모델링한 속성의 서로 다른 타입을 알아본다. 또한 접근자 메소드 코드를 간단히 하는 오브젝티브C 2.0의 기능을 다루고, 사용자 정의 검증 로직을 살펴보며 설명을 마친다.

7장, 프리디케이트로 작업 NSPredicate 생성의 기본부터 시작하며, 간단한 프리디케이트(predicate) 형식문자열에 대해 알아본다. 숫자나 날짜 같은 스칼라 값과 매칭하는 데 프리디케이트를 사용하는 방법과, 특정 부서에서 일하는 사원을 추출할 때 같이 특정 관계의 객체에 매칭하는 방법을 배운다. 특히 대소문자를 구별하는 정보를 포함하는 문자열과 작업하는 내용을 다룬 절이있고, SQLite 저장소에 쿼리하기 위해 코어 데이터가 생성하는 로(raw) SQL문을 조사하는 방법을 살펴본다.

8장, 데이터 이전과 버전 관리 구 버전과 신 버전 애플리케이션의 데이터 모델 간 호환성을 지키기 위한 버전, 데이터 이전 기능을 다룬다. 기본적으로 새로운 버전의 모델을 사용해 만든 애플리케이션은 구 버전의 모델을 열 수 없지만, 데이터 자동 이전을 사용하면 업그레이드 이후 시점에서도 기존 자료를 계속해서 사용할 수 있다. 코어 데이터 프레임워크가 데이터 모델 버전을 다른 것에 관련지어 주는 간단한 데이터 이전과, 매핑 모델과 엔티티 이전 정책을 사용해서 직접 데이터를 이전하는 방법을 배운다.

9장, 다중 뷰 컨트롤러와 실행 취소 최대한 간단한 예제를 제공하기 위해 이전 장까지 살펴본 모든 프로젝트는 단일 뷰 컨트롤러를 사용했다. 9장에서는 다중 뷰 컨트롤러에서 관리 객체 콘텍스트를 추적하는 방법과, 수정 뷰 컨트롤러(editting view controller)를 사용해 기존 관리 객체의 값을 바꾸는 방법을 알아본다. 또한 여러 개의 관리 객체 콘텍스트를 사용하는 방법과, 여러 콘텍스트에서 관리 객체를 참조하는 방법도 배운다. 그 후에는 코어 데이터가 제공하는 자동 실행 취소(Undo) 기능이 얼마나 사용하기 쉬운지 알아본다.

3부, 간단한 코어 데이터 애플리케이션 제작 3부에서는 코어 데이터를 사용해서 완전한 애플리케이션을 만드는 과정을 독자에게 보여준다.

10장, 샘플 애플리케이션: Note Collector 지금까지 배운 코어 데이터 지식을 활용해서 지금까지 만들었던 애플리케이션보다 더 안정성 높은 애플리케이션을 만들어본다. 추상 엔티티와 엔티티 상속, 다중 뷰 컨트롤러를 사용해서 노트를 기록하고 콜렉션에 정리하는 메모 애플리케이션을 만드는 과정을 보여준다. 로(raw) SQLite 파일을 조사해서 코어 데이터가 어떤 작업을 수행 중인지 살펴보는 방법을 배우고, 사용자가 애플리케이션을 처음으로 실행했을 때 샘플 데이터를 볼 수 있게 미래 생성해둔 데이터를 포함시키는 방법을 알아본다. 또한 실행 시 애플리케이션 상태를 유지하는 방법을 알아보는데, 이 과정을 통해 뷰 컨트롤러의 내비게이션 기반 스택을 재생성하기 위한 관리 객체 정보를 얻는 방법을 배운다.

4부, 최적화와 문제 해결 4부에서는 성능 관련 이슈를 다룬다. iOS 디바이스의 제한적인 메모리를 최적화하는 방법과, iOS 코어 데이터 개발 도구를 사용해 디버깅하는 방법을 배운다.

11장, iOS 성능 최적화와 메모리 요구 사항 성능, 최적화, 속도에 관련된 이야기를 한다. 애플리케이션의 실행 속도를 높이는 방법과, 사용 가능한 모든 메모리를 소비하거나 배터리 소모를 높이지 않으면서도 사용자의 동작에 즉각적으로 반응하는 애플리케이션을 만드는 몇 가지 간단한 요령을 배운다. 코어 데이터와 직접적으로 관련이 있지는 않지만, 11장은 독자가 리테인 카운트(retain count)와 객체가 해제되는 시점에 대해 잘 이해하고 있다고 가정한다.

12장, 코어 데이터 문제 해결 코어 데이터를 사용하는 도중 문제가 발생하면 해당 증상이나 에러 메시지를 이해하기 쉽지 않다. 어떤 부분이 잘못됐는지 이해하지 못한다면 코드를 수정하기란 불가능에 가깝다. 12장에서는 코어 데이터를 사용할 때 가장 빈번히 발생하는 문제를 진단하고 해결하는 방법을 알아본다. 코어 데이터 자체가 아닌 다른 부분이 문제를 야기할 수도 있다는 점을 기억해야 한다. 예를 들어 메모리 관리 에러는 어떤 코코아객체에든 영향을 줄 수 있고, 관리 객체도 예외가 아니다. 하지만 12장은 코어 데이터에 관련 있는 문제에만 집중한다.

저자/역자 소개

지은이의 말

우리는 데이터가 주도하는 세상에 살고 있다. 이메일, 트위터, 페이스북 같은 소셜 데이터와, 주가, 금융 예측, 은행 계좌 같은 비지니스 데이터, 퀴그자 게임 같은 레크리에이션 요소 등 수많은 데이터를 소비한다.

모바일 디바이스의 성능과 용량이 발전하면서 휴대폰이나 태블릿 컴퓨터를 통해 자료를 저장하거나 불러오고 표시하길 원하는 수요가 급격히 증가하고 있다. 소비자는 전에는 들어본 적도 없는 성능의 아이폰, 아이팟터치, 아이패드를 구입하고, 이런 기기를 통해 미디어를 재생하거나 애플리케이션을 실행하길 바란다. 수년 전만 하더라도 데스크탑에서나 가능했던 일이다.

데이터 저장을 관리하는 기능이 없는 애플리케이션을 상상하기란 점점 더 쉽지 않다. 심지어 다운로드한 트윗을 관리하기 위한 트위터 클라이언트 애플리케이션이라도 하나 혹은 그 이상의 트위터 계정을 영구적으로 보관해야 한다. 계산기 애플리케이션은 계산한 값을 메모리에 저장해두거나 이전 계산 내역을 저장해야 한다. 게임의 경우에는 성취감을 느낄 수 있게 최고 점수를 저장할 필요가 있으며, 게임 도중 전화가 와서 잠시 종료했다 다시 돌아왔을 때 바로 플레이로 복귀할 수 있게 상태를 저장하고 있어야 한다.

사용자가 모바일 개발자인 우리에게 요구하는 것은 많다. 데이터가 가장 효율적으로 저장되길 바랄 뿐 아니라 애플리케이션은 빠르고 부드럽게 실행되기를 기대한다. 모바일 디바이스에서는 상대적으로 적은 메모리만 사용할 수 있어 데이터를 효율적으로 다루기가 매우 어렵다. 또한 데스크탑에서는 상상도 할 수 없는 일이지만, 모바일 앱을 개발할 때는 효율적인 전원 사용도 염두에 둬야 한다. 배터리를 많이 소모하는 앱을 좋아하는 사용자는 없다.

아이폰 SDK가 처음으로 소개됐을 때는 개발자가 데이터 접근에 있어 소극적일 수밖에 없었다. 데이터를 저장하기 위해서는 기본 파일 저장을 통하거나 SQLite 데이터베이스에 직접 접근하는 수밖에 없었다. 제한된 메모리 상황에서 SQLite가 도움이 되는 것은 사실이지만, 개발자들은 직접 데이터 관리 레이어를 통해 데이터를 저장하거나 불러오기 위한 SQL 명령을 생성하는 모델 객체와 상호 작용하길 원했다.

이 모든 것이 코어 데이터를 통해 해결됐다. 아이폰 SDK 버전 3.0(4.0부터는 iOS라고 이름이 바뀌었다)부터 애플은 데이터 관리 레이어를 제공하기 시작했다. 우리는 저장하고 싶은 모델 객체에 스키마를 정의하고 디스크에서 모델 데이터를 관리하는 일은 코어 데이터에게 맡기면 된다. 로우레벨 SQL 명령을 신경 쓸 필요도, 단일 파일에서 데이터 1GB를 로딩할 때 메모리 문제가 생길지 걱정할 필요도 없다. 우리는 단지 ‘데이터 저장’이라는 일만 하면 된다. 의도적으로 애매한 용어를 사용했는데, 이는 데이터 파일을 관리하는 세세한 부분은 알아서 처리되기 때문이다. 개발자는 파일 관리를 프레임워크에게 맡기고 객체를 가지고 작업하기만 하면 된다.

코어 애니메이션(Core Animation)이 뷰에 사용하는 멋진 프레임워크라면, 우리는 이제 모델에 사용하는 멋진(다만 눈에 보이는 멋짐은 아니지만) 프레임워크라고 할 수 있다. 귀찮은 데이터 관리에 허비할 시간을 줄이고 애플리케이션의 특징적인 기능에 좀 더 집중할 수 있게 된 것이다.

데이터 관리에 있어 코어 데이터는 완벽에 가까운 솔루션이지만, 학습 곡선이 꽤나 가파른 편이다. 자료 저장을 위해 SQLite를 쉽게 다룰 수 있는 능력 때문에 종종 코어 데이터가 데이터베이스 자체라고 오해받기도 한다. 사실이건 맞는 얘기는 아니지만 일반적인 데이터베이스 용어와 기술을 알고 있으면 코어 데이터를 이해하는 데 도움이 된다.

코어 데이터 클래스 중에는 크기가 상대적으로 작은 클래스도 많지만, 실제로 프레임워크를 사용하기 전에 이 클래스들의 사용법을 충분히 숙지해 두는 편이 좋다. 예를 들어 ‘관리 객체(managed object)’나 ‘영구 저장(persistent store)’이라는 용어를 모른다면 ‘관리 객체 콘텍스트(managed object context)’를 이해하기 쉽지 않다. 하지만 관리 객체를 활용하기 위해서는 관리 객체 콘텍스트와 영구저장이 필요하다. 코어 데이터를 제대로 활용하기까지 넘어야 하는 산이 크게 느껴질 수 있다.

이 책은 코어 데이터를 처음부터 자세하게 설명한다. 프레임워크의 기본적인 클래스가 서로 상호 작용하기 위해 세세한 설정을 바꾸는 모습을 배운다. 데이터를 저장하고 불러오는 방법을 알아보고, 대부분의 데이터 기반 앱이 사용하는 UITableView의 데이터를 예제로 살펴본다. 그리고 데이터 무결성을 위해 데이터를 검증하는 것이 얼마나 쉬운지도 배운다. 마지막으로 코어 데이터 애플리케이션에 발생할 수 있는 문제를 해결하는 방법과, 데이터 관련 성능을 향상시키는 방법도 알아본다.

이 책을 마칠 때쯤이면 프레임워크와 클래스에 대해서 잘 이해하게 되고, 코어 데이터 없이 어떻게 데이터 관련 개발을 할지 의문에 빠지게 될지도 모른다.

저자 소개

팀 이스테드(Tim Isted)

1995년부터 매킨토시(Macintosh) 컴퓨터 소프트웨어를 개발했다. 또한 레일즈(Rails), PHP, 닷넷을 사용한 웹 애플리케이션을 개발했고, 윈도우 개발자로도 알려졌다. 프로 음악가이자 노래 선생님이며, 지휘, 연주, 강의, 프로그래밍에 동일한 시간을 투자하기 위해 많은 노력을 기울인다. 데스크탑용 코어 데이터 개발에 관련된 블로그 포스팅을 www.timisted.net에서 찾을 수 있다. 유럽과 미국에서 열리는 맥 개발자 컨퍼런스인 NSConference의 공동주최자이기도 하다.

톰 해링턴(Tom Harrington)

주로 임베디드 시스템과 리눅스 프로그램을 작성했지만, 2002년 아토믹 버드 유한회사(Atomic Bird, LLC)를 시작하면서 맥 OS X 프로그래밍으로 옮겨왔다. 이후 6년 동안 수준 높은 맥 소프트웨어를 개발하다가 2008년부터 아이폰 개발을 시작했다. 주로 계약을 맺은 여러 클라이언트를 위한 iOS 소프트웨어를 개발했다. 또한 콜로라도 주에서 열리는 iOS 개발자 이벤트를 주최하기도 한다. 소프트웨어를 작성하지 않을 때면 종종 산악자전거를 탄다. 홈페이지는 www.atomicbird.com이다.

옮긴이의 말

개발자라면 분야를 막론하고 데이터 저장에 대한 고민을 해봤을 것입니다. 특히 자원이 한정적인 환경에서 개발을 하는 모바일 애플리케이션 개발자라면 더 조심스럽게 접근하게 될 텐데요, 아무리 간단한 애플리케이션을 만들더라도 개발자는 어떤 방법으로든 데이터를 저장해야 합니다. 예를 들어 트위터 어플을 켤 때마다 웹에서 트윗을 가져오는 방식은 속도나 한정된 용량 등의 문제로 현실적이지 않습니다. 기존 트윗은 로컬 영역에 저장해놓고, 새로운 데이터만 서버에서 읽어오는 방식을 사용해야 합니다.

데이터를 저장하는 방법에는 여러 가지가 있고, 개발자는 자신에게 맞는, 그리고 개발 중인 애플리케이션에 가장 어울리는 저장 방식을 택할 수 있습니다. 그리고 iOS 애플리케이션을 만들고 있다면 우리의 선택지에는 ‘코어 데이터’라는 프레임워크가 추가됩니다.

애플에서 제공하는 데이터 관리 레이어인 코어 데이터를 사용하면 직접 SQL 구문을 작성하지 않아도 되고, 방대한 용량의 데이터를 불러올 때 발생할 수 있는 메모리 문제를 고민하지 않아도 됩니다.

말 그대로 데이터 관리라는 본질적인 문제에만 집중할 수 있게 됩니다. 코어 데이터는 하루아침에 쉽게 정복할 수 있는 쉬운 주제는 아니지만, 이 책이 그 길로 나아가는 좋은 길잡이가 돼 줄 것이라 믿어 의심치 않습니다.

옮긴이 소개

정승원

LG전자 미디어 연구소를 거쳐 현재 2K 스포츠Sports에서 소프트웨어 엔지니어로 일하고 있다. 옮긴 책으로는 에이콘출판사에서 펴낸 『The Python Standard Library by Example 한국어판』(2012), 『아이폰 위치 기반 애플리케이션 개발』(2013), 『Python Design Patterns』(2014)가 있다.

목차

목차
  • I부 소개
  • 1장 iOS 코어 데이터 개요
    • 역사
      • 코어 데이터의 탄생
    • iOS에서 코어 데이터를 사용해야 하는 이유
      • 관계 관리
      • 관리 객체와 데이터 검증
      • 실행 취소와 상태 관리
    • iOS와 데스크탑의 차이점
      • 불러오기 결과 컨트롤러
    • 코어 데이터 사례 연구
      • 아이폰용 머니웰
      • Calcuccino
      • 어소시에이티드 프레스

  • 2장 코어 데이터 기초
    • 디스크에 객체 기록
    • 코어 데이터 방식
      • 엔티티와 관리 객체
      • 관계
      • 관리 객체 콘텍스트
      • 객체 불러오기
      • 폴팅과 유니큐잉
      • 영구 저장소와 영구 저장소 코디네이터
    • 엑스코드 코어 데이터 템플릿
      • 내비게이션 기반 프로젝트 테플릿
      • 데이터 모델러
      • 코어 데이터 스택 설정
      • 애플리케이션 실행
      • RootViewContoller 코드
    • 정리

  • 3장 데이터 모델링
    • 관리 객체와 엔티티
    • 데이터를 엔티티로 나누기
      • 모델-객체 용어에서의 코어 데이터
      • 데이터 정규화
      • 바이너리 데이터 저장
    • 엑스코드 데이터 모델러 다루기
      • 엔티티 작성
      • 프로퍼티 작성
      • 관계 작성
    • 정리

  • II부 코어 데이터로 작업
  • 4장 기본적인 저장과 불러오기
    • 새 관리 객체 작성
      • 콘텍스트 저장
    • 저장된 관리 객체 불러오기
    • 관리 객체 삭제
    • 테이블 뷰 작업
      • Random Dates 애플리케이션 프로젝트
      • Random Dates 데이터 모델
      • 기본 RootViewController 동작
      • 임의의 날짜 객체 불러오기
      • RandomDate 객체 표시
      • RandomDate 객체 삭제
    • 커스텀 관리 객체 서브클래스
      • 관리 객체를 위한 커스텀 클래스 생성과 설정
    • 정리

  • 5장 NSFetchedResultsController 사용
    • NSFetchedResultsController 소개
    • NSFetchedResultsController 생성
    • 테이블 뷰에 정보 공급
      • 열과 섹션의 수
      • 인덱스 경로의 셀 반환
      • 섹션 정보 반환
      • 기반 데이터 변화 처리
      • 정보 캐싱
    • Random Dates 애플리케이션에 NSFetchedResultsController 사용
      • NSFetchedResultsController 서브클래스
    • 정리

  • 6장 관리 객체로 작업
    • 기본 관리 객체 서브클래스 파일
      • Random People 프로젝트 생성
      • 관리 객체 클래스 인터페이스
      • 관리 객체 클래스 구현
    • Random People 애플리케이션 환경 설정
      • 정보 표기
    • 데이터 검증
      • 개별 프로퍼티 검증
      • 다른 프로퍼티에 기반을 둔 검증
      • 삭제 전 검증
      • Random People 애플리케이션 수정
    • 일시적 속성으로 작업
      • 데이터 모델 수정
      • AWPerson 인터페이스와 구현에 추가
      • 일시적 프로퍼티용 게터 메소드 추가
      • 일시적 프로퍼티용 세터 메소드 추가
      • UIColor 프로퍼티 사용
    • 변형 가능한 속성으로 작업
    • 관리 객체 라이프 사이클
      • 비지속 프로퍼티 초기화
    • 정리

  • 7장 프리디케이트로 작업
    • 프리디케이트 기본
      • 서식 문자열을 사용한 프리디케이트 작성
      • 프리디케이트 변수
      • 프리디케이트 비교 연산자
      • 키 경로
    • 문자열 비교
    • 복합 프리디케이트
      • NSCompoundPredicate
    • 집합과 관계
    • SQL 쿼리 조사
    • 검색 창 컨트롤러 추가
      • 불러오기 프리디케이트 설정
      • 검색 프리디케이트 수정
      • 검색 스코프 바 필터 추가
    • 정리

  • 8장 데이터 이전과 버전 관리
    • 데이터 이전 문제
      • 데이터 모델 수정
    • 다중 데이터 모델 버전과 가벼운 이전
      • 데이터 모델 버전 생성
      • 가벼운 이전 활성화
    • 엔티티와 속성 이름 변경
      • 이름 변경 식별자 제공
      • 여러 버전 관리
    • 매핑 모델
    • 커스텀 엔티티 이전 정책
    • 정리

  • 9장 다중 뷰 컨트롤러와 실행 취소
    • 관리 객체 수정
      • 수정 중인 관리 객체의 트랙 유지
      • 관리 객체 프로퍼티 갱신
      • 관리 객체 검증
    • 실행 취소 작업
    • 다중 관리 객체 콘텍스트
      • 관리 객체 콘텍스트 변동 사항 병합
      • 컨트롤 값이 변할 때 관리 객체 값 변경
      • 관리 객체 콘텍스트 리셋
    • 에디터 컨트롤러로 새로운 객체 추가
    • 정리

  • III부 간단한 코어 데이터 애플리케이션 제작
  • 10장 샘플 애플리케이션: Note Collector
    • Note Collector 애플리케이션
      • Note Collector 프로젝트 생성
    • 애플리케이션 데이터 모델
      • 추상 엔티티 모델링
      • 서브엔티티 모델링
      • 관리 객체 클래스 파일 생성
    • RootViewController 설정
    • 컬렉션 내용 표시
      • 화면에 표시할 컬렉션 기억
      • 로 데이터 파일 내용 검사
    • 아이템 이름 설정, 수정
      • 새로운 뷰 컨트롤러 생성
    • 노트 화면 표시와 수정
    • 미리 생성한 데이터 스토어 제공
      • 애플리케이션 번들 내부 데이터로 작업
    • 정리

  • IV부 최적화와 문제 해결
  • 11장 iOS 성능 최적화와 메모리 요구 사항
    • 성능, 최적화, 속도
    • 데이터 저장소 종류
      • 바이너리와 메모리 데이터 저장소
      • SQLite 데이터 저장소
      • SQLite 저장소 모니터링
    • 불러오기 최적화
      • 불러오기 제한 설정
      • 프리디케이트 최적화
      • 관계 미리 불러오기
      • 기타 객체 미리 불러오기
      • 프로퍼티 값 미리 불러오기
      • NSFetchedResultsController와 섹션
    • 폴팅 관리
      • 폴트 없이 ‘안전한’ 메소드
      • 프로퍼티 로딩 예방
      • 배치 폴팅
      • 객체 다시 폴팅
    • BLOB 관리
      • BLOB을 사용하는 엔티티에 넣기
      • BLOB을 별도 엔티티에 넣기
      • BLOB을 외부 파일에 넣기
    • Instruments로 코어 데이터 모니터링
    • 코어 데이터를 사용하지 말아야 할 때
    • 기타 메모리 관리 팁
      • 필요한 상황에만 실행 취소 관리자 사용
      • 관리 객체 콘텍스트 리셋
    • 정리

  • 12장 코어 데이터 문제 해결
    • 코어 데이터 에러 첫 대면
      • 찾을 수 없는 모델
      • 클래스를 찾을 수 없음?
    • 코어 데이터 스레딩 이슈
      • 코어 데이터 멀티스레딩 기초
      • 스레드 간 데이터 코디네이팅
      • 스레드 간 충돌, 데이터 간 충돌 처리
      • 조심하자! 임시 ID!
    • 관리 객체 문제점
      • 프로퍼티 값을 설정할 때 발생하는 크래시
      • 커스텀 접근자 메소드가 호출되지 않는 경우
      • 관리 객체 무효화
      • 실행할 수 없는 폴트
    • 객체 불러오기 문제점
      • 불러오는 동안 데이터 정렬 문제
      • 최근 변화를 보여주지 않는 불러오기 결과
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안