[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple/SwiftData & CoreData 8

[SwiftData] ModelContainer, ModelContext

본 게시글은 WWDC 2023의 Dive deeper into SwiftData 세션의 내용을 정리한 것입니다. https://developer.apple.com/videos/play/wwdc2023/10196 @Model 을 통해 생성된 모델은 ModelContainer에 의해 실질적 스키마로서 동작하게 되며, 이를 기반으로 영구 저장 데이터가 생성되게 된다. 코드에서 Model 클래스의 인스턴스로 작업을 하게되면 해당 인스턴스는 메모리에서 해당 상태를 추적하고 관리하는 ModelContext에 연결된다. ModelContainer 스키마와 영구 저장 데이터간의 bridge 역할을 한다. 객체가 메모리에 저장될지, 디스크에 저장될지 등 객체의 저장 방식에 대한 설명이 포함된다. Versioning, M..

[SwiftData] Migration과 버전관리

본 게시글은 WWDC 2023의 Model your schema with SwiftData 세션의 내용을 정리한 것입니다. https://developer.apple.com/videos/play/wwdc2023/10195 Modeling 복습 SwiftData를 Import하고 class에 @Model 매크로를 부여하는 것으로 스키마를 생성할 수 있다. @Attribute(.unique) 매크로를 통해 특정 속성을 유니크하게 만들 수 있다. 만약 이미 존재하는 프로퍼티를 Insert하려 하면 기존에 존재하던 데이터를 업데이트한다. (upsert) 기존에 존재하던 속성의 이름을 그냥 바꾸면 단순히 새로운 속성만 생성되고 이전 속성의 데이터는 모두 삭제된다. 이름을 바꾸고 기존의 데이터를 보유하기 위해서는 ..

[SwiftData] Meet SwiftData

https://developer.apple.com/videos/play/wwdc2023/10187/?time=463 해당 게시글은 WWDC 2023의 Meet SwiftData 세션을 글로 정리한 것입니다. Meet SwiftData SwiftData는 Swift의 Macro 시스템을 적극 활용중이며 SwiftUI는 물론이고 CloudKit, Widget과도 자연스럽게 통합됨. 해당 세션에서는 다음 세가지를 설명함. @Model 매크로를 통해 Swift 코드 내에서 모델을 직접 만드는 방법 내 데이터를 fetch하고 modify하는 방법 SwiftUI와 어떻게 원활하게 작동하는지에 대한 개요 Using the model macro @Model는 Swift Code 내에서 Model Schema를 정의할 ..

[SwiftData] 기본설명 및 특징

https://developer.apple.com/xcode/swiftdata/ SwiftData 선언적 코드로 데이터를 쉽게 관리해주는 도구. Swift 코드를 통해 안정적으로 쿼리 요청을 보내고 필터링할 수 있다. SwiftUI와의 연동성도 좋다. 모델생성 용이 모델도 @Model 어트리뷰트만 붙여주면 추가적인 파일이나 도구없이 관리가 가능하다. 또한 제약조건도 @Attribute(.unique) 와 같은 방식으로 간단하게 선언할 수 있다.당연히 Relationship 설정도 가능하다. @Model class Recipe { @Attribute(.unique) var name: String var summary: String? var ingredients: [Ingredient] } SwiftData..

[Core Data] Core Data Stack

Core Data Stack Core Data는 4개의 주요 객체로 구성됩니다. 이를 CoreData Stack 이라고 합니다. Persistent Store 데이터를 영구적으로 저장하는 공간으로, 앱을 종료해도 지속적으로 데이터가 저장됩니다. 데이터 종류에 따라 2가지 종류로 나뉘어집니다. Atomic 저장소 : 데이터를 처리하기 위해서는 모든 데이터를 메모리에 로드해야 합니다. (XML, Binary, In-Memory) Non-atomic 저장소 : 필요한 부분만 메모리에 로드합니다. (SQLite) Core Data는 Non-atomic 저장소인 SQLite를 기본 저장소로 사용합니다. Object Model 어떤 데이터들이 저장되며, 해당 데이터들이 어떤 관계를 가지고 있는지 설명하는 객체입니다..

[CoreData] 기초개념 (3): Entity Relationship

Entity Relationship 해당 버튼을 누르면 Entity를 관계그래프 형태로 확인할 수 있다. 이 때 표현된 Entity 둘을 마우스를 통해 드래그를 하여 이어주면 Relationship을 설정할 수 있다. Relationship이 설정된 모습이다. 각 Entity에게 Relationship은 서로를 의미하게 된다. 데이터베이스 모델처럼 관계 타입도 설정할 수 있다. (To Many or To One) relationship도 attribute와 유사하게 사용하면 된다.

[CoreData] 기초개념 (2): Query & Sorting

데이터베이스에서 그랬듯 Coredata에서도 조건을 주어 원하는대로 데이터를 가져올 수 있다. 또한 정렬순서도 결정할 수 있다. 조건을 줄 때는 NSPredicate 객체를, 정렬을 할 때는 NSSortDescriptor를 사용한다. NSPredicate 어떻게 데이터를 필터링하고 불러올지를 결정하는 객체이다. SQL에서 쿼리문을 날리는 것과 비슷하게 쿼리문을 작성하고 요청할 수 있다. let predicate = NSPredicate(format: "title CONTAINS %@", searchText) request.predicate = predicate NSPredicate의 쿼리문을 작성하고, 거기에 넣어줄 값이 필요하다면 뒤에 작성한다. 위는 NSPredicate의 예시이다. title att..

[CoreData] 기초개념 (1): Entity, CRUD

CoreData란? Apple에서 제공하는 데이터관리 프레임워크로, 데이터를 유지 및 캐싱할 수 있을 뿐 아니라 Cloudkit을 사용해 여러 장치에 데이터를 동기화하는 것도 가능하다. 내부적으로 SQLite를 사용하고 있어 데이터베이스처럼 사용도 가능하지만, 정확히 말하면 데이터베이스는 아니다. SQLite에 데이터를 저장하고 관리하는 프레임워크라고 보는 편이 더 맞는 표현이다. CoreData 설정 프로젝트를 생성할때 Use CoreData를 체크해서 만들 수 있다. 프로젝트를 생성 후 확인해보면 위와 같이 데이터모델 파일이 새로 생겨있음을 알 수 있다. // MARK: - Core Data stack lazy var persistentContainer: NSPersistentContainer = {..