1. C R U D
데이터 CRUD 는 네이티브 (앱) 내부 또는 서버에서 일어난다
Create = 데이터 생성
Read = 데이터 읽기
Update = 데이터 업데이트 (쓰기)
Delete = 데이터 삭제
🍎 전화번호 앱에서 일어나는 CRUD
C = 새로운 전화번호를 등록한다
R = 저장된 전화번호 데이터를 조회한다
U = 저장된 전화번호를 수정한다
D = 전화번호를 삭제한다
2. CoreData 프로젝트 생성
1️⃣ Storage → CoreData 선택
2️⃣ Entity 생성
생성된 coreData 파일 진입 → Add Entity 버튼클릭
*Entity란? 저장될 데이터들의 집합
Entity 가 아래와 같이 생성됨
3️⃣ Entity 이름 변경 & Attributes 추가
Emtity의 이름을 목적에 맞게 변경해 준 후 Attributes 추가
PhoneBook 이라는 데이터 집합 내부에 'name', 'phoneNumber' 속성이 추가된 것
속성에 맞는 Type도 변경해 준다!
나는 과제 기준에 맞게 문자열로 입력받는 정보창을 만들어야 하므로 두 가지 모두 String 타입으로 해주었다
4️⃣ 우측 인스펙터 영역에서 Codegen 생성
Codegen 이란?
: Entity를 어떤 형식의 코드로 생성할 것인지 선택하는 속성이다
- Manual/None = Entity 의 서브 클래스를 자동으로 생성하지 않고 개발자가 클래스 작성
- Class Definition = Entity 의 서브 클래스를 자동으로 생성
- Category/Extension = Entity 클래스와 함께 extension 을 위한 파일까지 생성
5️⃣ Code Generate
Create NSManagedObject Subclass... 클릭
Entity 체크 확인 후 추가
Create
파일 2개가 추가된 것을 확인할 수 있음
3. CoreData 용어 설명
- Entity (개체):
- CoreData에서 데이터 모델을 정의할 때 사용하는 개념입니다. 개체는 데이터베이스의 테이블과 유사한 역할을 합니다.
- 예를 들어, 전화번호부 앱에서 각 연락처는 하나의 개체가 될 수 있습니다. 각 개체에는 이름, 전화번호, 프로필 이미지 등의 속성이 포함될 수 있습니다.
- NSManagedObject (관리 객체):
- CoreData에서 데이터베이스의 레코드에 해당합니다. 각 NSManagedObject는 하나의 개체를 나타냅니다.
- 예를 들어, 전화번호부 앱에서 각 연락처가 NSManagedObject가 될 수 있습니다. 각 NSManagedObject는 개체의 속성(예: 이름, 전화번호)을 저장하고 관리합니다.
- Entity Description (개체 설명):
- CoreData에서 개체를 만들 때 사용하는 설계 도구입니다. 개체 설명은 개체의 이름, 속성, 관계 등을 정의합니다.
- 예를 들어, 전화번호부 앱에서 연락처 개체의 설명에는 이름과 전화번호 속성이 포함될 수 있습니다.
- CoreData Stack (스택):
- CoreData에서 데이터를 저장하고 관리하는 데 필요한 모든 구성 요소의 집합입니다. 일반적으로 스택에는 관리 객체 컨텍스트, 데이터베이스 파일, 모델 파일 등이 포함됩니다.
- CoreData 스택을 설정하면 애플리케이션이 데이터를 어떻게 저장하고 검색할지를 결정할 수 있습니다.
- 속성 설정 (setValue(_:forKey:)):
- CoreData에서 NSManagedObject에 값을 할당하는 방법입니다. NSManagedObject의 각 속성(예: 이름, 전화번호)에 값을 설정하여 데이터를 저장하고 변경할 수 있습니다.
- 저장 (save()):
- CoreData에서 데이터를 영구적으로 저장하기 위해 호출하는 메서드입니다. save() 메서드를 호출하면 NSManagedObject에 대한 변경 사항이 데이터베이스에 반영됩니다.
- 저장에 성공하면 데이터가 영구적으로 저장되며, 실패하면 오류 처리를 통해 문제를 해결할 수 있습니다.
4. CoreData 파일 코드 설명
1️⃣ PhoneBook+CoreDataClass.swift
import Foundation
import CoreData
@objc(PhoneBook)
//CoreData 프레임워크에서 관리되는 객체를 나타내는 기본클래스
//CoreData Entity 와의 상호작용을 관리하며 속성 값의 저장및 검색을 처리
public class PhoneBook: NSManagedObject {
}
2️⃣ PhoneBook+CoreDataProperties
import Foundation
import CoreData
extension PhoneBook {
//nonobjc: Objective-C 에서는 동작하지 않는다(Swift에서만 작동하는 메서드)
//fetchRequest(): PhoneBook에 대한 여러가지 데이터 검색을 도움
@nonobjc public class func fetchRequest() -> NSFetchRequest<PhoneBook> {
return NSFetchRequest<PhoneBook>(entityName: "PhoneBook")
}
//NSManaged: CoreData에 의해 관리되는 객체를 의미
@NSManaged public var phoneNumber: String?
@NSManaged public var name: String?
}
//PhoneBook의 타입이 고유하게 식별될 수 있음을 의미
extension PhoneBook : Identifiable {
}
5. NSPersistentContainer 생성됨
AppDelegate에 기존에는 볼 수 없었던 코드가 추가된 것을 확인할 수 있음
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[강의노트👩🏻💻] JSON(JavaScript Object Notation)와 Codable (0) | 2024.07.30 |
---|---|
[Swift 🍎] @objc (1) | 2024.07.22 |
[Swift 🍎] configureUI() (0) | 2024.07.10 |
[Swift 🍎] ViewController 메서드 (0) | 2024.07.10 |
[강의노트👩🏻💻] ViewController 생명주기 이론 (0) | 2024.07.09 |