CoreData

CoreData ) .xcdatamodeld?

JoonSwift 2022. 4. 26. 00:33

.xcdatamodeld 파일

CoreData를 활용하여 Data Model을 만들면 .xcdatamodeld 확장자를 가진 파일을 쉽게 찾아볼 수 있습니다.

이번 포스팅에서는 .xcdatamodeld 파일이 어떤 역할을 하는지에 대해 정리해보려고 합니다.

 

d 의 의미

.xcdatamodeld 에서 .xcdatamodel 이라면, datamodel 확장자 같은데, 뒤에 d가 하나 더 붙으면서 이 의미가 궁금해지게 만들고 있습니다. .xcdatamodeld  에서 d의 의미는 document (Document Package) 라는 의미를 가지고 있습니다. 

(Document Package에 대한 설명은 아래의 참고문서에 남겨놓겠습니다.)

 

즉, 우리는 CoreData를 사용할 때, 이 Versioning을 지원하는 Managed Object Model을 사용하는데, 이 모델들이 파일 시스템에서 .xcdatamodeld 라는 document에 의해 보여집니다.

What's in document?

.xcdatamodeld document는 모델에 대한 version들을 그룹화 해놓은 파일 패키지 입니다. 이는 각각 .xcdatamodel 확장자를 가진 파일과, 모델에 대한 version 정보를 담은 Info.plist로 나타내어 집니다.

그래서 어떤 모델을 만들어 해당 모델에 대한 다른 version을 생성하면, 이렇게 .xcdatamodel 확장자를 가진 파일 2개가 .xcdatamodeld 패키지 안에 생성되는것을 확인할 수 있습니다.

 

정리

문서들을 읽으며 이해한바로는 다양한 버전을 가질 수 있는 Managed Object Model의 관리가 복잡하고 여러울 수 있기 때문에, 이를 패키지화 하여 내부적으로 유연하게 관리해주는 역할을 하는 것이 .xcdatamodeld라고 이해했습니다. 

.xcdatamodeld 패키지 안에는 여러 버전의 .xcdatamodel 파일들이 존재할 수 있고, 버전에 대한 정보 또한 가지고 있습니다.

 

참고 문서

https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/DocumentPackages/DocumentPackages.html#//apple_ref/doc/uid/10000123i-CH106

 

Document Packages

Document Packages If your document file formats are getting too complex to manage because of several disparate types of data, you might consider adopting a package format for your documents. Document packages give the illusion of a single document to users

developer.apple.com

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html

 

Model File Format and Versions

Model File Format and Versions A managed object model that supports versioning is represented in the filesystem by a .xcdatamodeld document. An .xcdatamodeld document is a file package (see Document Packages) that groups versions of the model, each represe

developer.apple.com