반응형

 

Hacking with Swift 사이트의 강좌 번역본입니다.

 

[원문 : https://www.hackingwithswift.com/quick-start/swiftui/introduction-to-using-core-data-with-swiftui]

 

Introduction to using Core Data with SwiftUI

 

Apple의 소프트퀘어 플랫폼의 2가지 중요한 부분인, Core Data와 SwiftUI가 함께 잘 동작하도록 작성되었다는 것은 놀랄만한 일이 아닙니다: SwiftUI 앱에서 번거로움을 최소화해서 Core Data를 통합할수 있도록 property wrappers, environment support 등을 모두 제공받습니다. 

 

SwiftUI 이전에는 아키텍쳐 관점에서 Core Data를 사용하는 다양한 방법을 찾는 것이 일반적이었습니다 - Apple은 AppDelegate 레벨에서 컨테이너를 만들고나서 필요할때 사용하는 것을 강력히 권장했었고, 다른 사람들은 관리자 클래스를 사용하는 것을 선호했고, 몇몇은 Core Data를 완전히 추상화 하는 것을 선호 했기에, 나중에 Realm이나 다른 옵션으로 자유롭게 변경할 수 있었습니다. 

 

하지만, SwiftUI와 Core Data의 통합은 매우 강력하게 한 방향을 가르키기 때문에 다릅니다: 앱을 시작할때 Core Data 컨테이너를 한번 만들고, environment에 관리되는 객체 컨텍스트를 넣고나서, 거기에서 직접 가져오기(fetch) 요청을 수행합니다.

 

다음은 추측한게 아닙니다 - Apple은 말 그대로 매우 명확한 방법으로 설계되었고, SwiftUI의 Core Data 통합의 모든 기능을 활용려면 Apple이 제시한 방식을 따라야 합니다. 

 

다음은 의미를 이해하는데 도움이될 4가지 특별한 기능이 있습니다.

  1. NSManagedObject은 사용자 인터페이스의 부분에 모든 객체를 바인딩 할 수 있는 ObservableObject 프로토콜을 준수합니다. 
  2. managedObjectContext 키는 Core Data 관리 객체 컨텍스트를 활성화한 것을 environment에 저장하도록 설계되었습니다. 
  3. Xcode의 템플릿은 해당 컨텍스트를 scene delegate 내부에 있는 초기화 컨텐츠 뷰에 삽입합니다. 
  4. @FetchRequest property wrapper는 environment의 관리 객체 컨텍스트로 가져오기 요청을 수행하기 위해 사용합니다.

따라서, 앱이 실행할때, 관리 객체 컨텍스트를 만들고, 뷰에 대한 environment에 붙이고, 앱에서 사용할 데이터를 가져오는데 FetchRequest를 사용합니다.

반응형
Posted by 까칠코더
,