ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CoreData와 실습(1)
    카테고리 없음 2024. 7. 10. 16:25

    CoreData 는 앱에서 기기의 **디스크**에 데이터를 읽고 쓸 수 있게 돕는 프레임워크

     

    Swift 로 기기 내 디스크에 데이터를 저장할 수 있는 대표적인 방법으로는

    • CoreData
    • UserDefaults

     

    1. CoreData 프로젝트 생성

     

    프로젝트를 생성할 때 Storage → CoreData 를 선택.

     

    2. Entity 생성

    • 아래 Add Entity 버튼을 클릭해서 Entity 만들기. Entity 는 저장될 데이터들의 집합.
    • (실습) PhoneBook 이라는 Entity 를 만들기

     

    • Entity 이름은 PhoneBook
    • Attribute 로는 name , phoneNumber 를 추가
    • 전화번호부 라는 데이터 집합 안에 이름 과 전화번호 라는 속성이 부여된 것.

     

    오른쪽 인스펙터 영역 중 Codegen 개념

    • Code Generator 의 줄임말. Entity 를 어떤 형식의 코드로 생성할 것인지 선택하는 속성
    • Manual/None = Entity 의 서브 클래스를 자동으로 생성하지 않고 개발자가 클래스 작성
    • Class Definition = Entity 의 서브 클래스를 자동으로 생성.
    • Category/Extension = Entity 클래스와 함께 extension 을 위한 파일까지 생성
    • 여기서는 Manual/None 으로 생성

    3. Code Generate

     

    • Editor → Create NSManagedObject Subclass 를 클릭해서 코드를 생성
    • 그럼 위와 같이 2개의 파일이 생성됨(PhoneBook + CoreDataClass, PhoneBook+CoreDataProperties)

    PhoneBook+CoreDataClass.swift 간단 설명

    import Foundation
    import CoreData
    
    @objc(PhoneBook)
    public class PhoneBook: NSManagedObject {
    
    }

     

    NSManagedObject는 Core Data 프레임워크에서 관리되는 객체를 나타내는 기본 클래스. 이 클래스는 Core Data 엔티티와의 상호작용을 관리하며, 속성 값의 저장 및 검색을 처리

     

     

    PhoneBook+CoreDataProperties.swift 간단 설명

    import Foundation
    import CoreData
    
    
    extension PhoneBook {
    
        @nonobjc public class func fetchRequest() -> NSFetchRequest<PhoneBook> {
            return NSFetchRequest<PhoneBook>(entityName: "PhoneBook")
        }
    
        @NSManaged public var name: String?
        @NSManaged public var phoneNumber: String?
    
    }
    
    extension PhoneBook : Identifiable {
    
    }
    • @nonobjc = Objective-C 에서는 동작하지 않고 Swift 에서만 동작하는 메서드임을 명시
    • fetchRequest() = PhoneBook 에 대한 여러가지 데이터 검색을 도움
    • @NSManaged = CoreData 에 의해 관리되는 객체를 의미
    • Identifiable = PhoneBook 타입이 고유하게 식별될 수 있음을 의미

    4. NSPersistentContainer 생성

     

    • NSPersistentContainer 는 CoreData에서 데이터를 저장하고 관리하는 데 필요한 핵심 객체 → 직역해보면 영구적인 저장 장소
    • 먼저 NSPersistentContainer 를 생성해줘야하는데, 프로젝트 생성할 때 CoreData 를 사용한다고 체크 해줬으므로, AppDelegate.swift 에 기본적으로 NSPersistentContainer 를 세팅하는 코드가 존재

    • AppDelegate.swift 아래쪽에보면 saveContext() 라는 메서드도 자동으로 생성되어있는데, 직역하면 문맥을 저장한다는 뜻
    • 데이터의 업데이트(추가, 업데이트, 삭제 등)가 일어났으면 saveContext() 를 호출해서 그 문맥을 저장해야 함

     

     

    CoreData와 실습(2)

    CoreData 를 활용한 CRUD(Create, Read, Update, Delete) 이전에 NSPersistentConatiner 를 만들었으므로, ViewController 에서 이를 활용해서 데이터 접근 1. CoreData 를 통해 CRUD 의 C, R 을 하는 과정ViewController.swiftentityN

    bluewiper.tistory.com