간편결제, 신용카드 청구할인
PAYCO(페이코) 최대 5,000원 할인
(페이코 신규 회원 및 90일 휴면 회원 한정)
네이버페이 1%
(네이버페이 결제 시 적립)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (21,600원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (24,300원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (25,110원)
(최대할인 3만원 / 3만원 이상 결제)
Close

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

원제 : Core Data for iOS: Developing Data-Driven Applications for the iPad, iPhone, and iPod touch
소득공제

2013년 9월 9일 이후 누적수치입니다.

공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

할인혜택
적립혜택자동적립
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(55)

  • 사은품(12)

출판사 서평

아이폰, 아이패드에서 데이터를 관리할 때는 속도, 안정성, 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장은 코어 데이터에 관련 있는 문제에만 집중한다.

목차

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!
관리 객체 문제점
프로퍼티 값을 설정할 때 발생하는 크래시
커스텀 접근자 메소드가 호출되지 않는 경우
관리 객체 무효화
실행할 수 없는 폴트
객체 불러오기 문제점
불러오는 동안 데이터 정렬 문제
최근 변화를 보여주지 않는 불러오기 결과
정리

본문중에서

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

저자소개

팀 이스테드(Tim Isted) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

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

톰 해링턴(Tom Harrington) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

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

생년월일 -
출생지 -
출간도서 0종
판매수 0권

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

이 상품의 시리즈

에이콘 모바일 프로그래밍 시리즈(총 65권 / 현재구매 가능도서 56권)

펼쳐보기

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    0.0 (총 0건)

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용