[ios/tutorial] Core Data - Creating a Managed Object Model
-
model layer 를 관리하는 framework를 core data 라고 부른다.
많은 것을 자동화시켜서 제공한다.
-
Core data 의 schema 는 managed object model 로 mapping 된다. ( NSManagedObjectModel )
이 model 은 소위 table 이라고 부르는 entity 들의 집합이다.
Creating an Entity and Its Properties
-
New File -> Core Data -> Data Model
이것으로 생성된 파일의 확장자는 .xcdatamodeld 이다.
-
.xcdatamodeld 를 클릭하면 entity, attribute, relation 등을 관리할 수 있는 UI 가 나온다.
이곳에서 설정을 하면 table 을 생성한 것과 같다.
-
entity 이름과 이에 매칭되는 class 이름은 같을 필요가 없다.
entity 에 매핑되는 class 의 추천되는 이름형태는 prefix + EntityName + MO(suffix) 이다.
-
entity 도 상속될 수 있다.
super class, subclass 와 같다.
단 이 때 모든 entity 는 한 SQLite schema 에 정의되어 있어야 한다.
-
model 에 해당하는 class 를 모두 만들 필요는 없다.
Abstract class 처럼 person 이라는 entity 를 만들고,
Employee 나 Customer 와 같은 sub entity ( concrete class ) 를 intialize 하는 방식으로 사용할 수 있다.
Entity 생성시 abstract 로 만들면, 이 녀석은 절대 직접적으로 instantiate 되지 않는다는 것을 의미한다.
-
property 이름은 NSObject 나 NSManagedObject 에서 사용하는 property name 과 중복되서는 안 된다.
예를 들어 description 같은 것은 사용할 수 없다.
-
transient attribute 는 persistent store 에 저장되지는 않는 녀석이다.
Core data 는 transient property 의 변화를 감지하고, undo 기능을 제공한다.
transient property 는 계산한 값을 사용할 수도 있고, 가져온 값을 임시 저장하는 등 여러가지 용도로 사용할 수 있다.
-
attribute 를 optional 로 설정할 수 있다.
optional 로 설정하면 꼭 value 를 가질 필요가 없다는 것을 의미한다.
하지만 이것은 그다지 추천되지는 않는다. 특히 숫자일 때 그러하다.
-
Core data 는 relation 에 to-one 과 to-many relationship 을 제공한다.
many-to-many 는 서로를 to-many 로 정의하면 된다.
또 fetched property 도 제공한다.
fetched property 는 weak, one-way 를 이야기한다.
'프로그래밍 놀이터 > iOS' 카테고리의 다른 글
[ios/tutorial] Core Data - Fetching Objects (0) | 2017.11.04 |
---|---|
[ios/tutorial] Core Data - Initializing the Core Data Stack (0) | 2017.11.03 |
[ios] Nullable & NonNull annotation (0) | 2017.10.30 |
[ios] ARC 와 Toll-free bridging (0) | 2017.10.29 |
[objective c] 형변환 (0) | 2017.10.28 |
댓글