SwiftUI + 핵심 데이터

Core Data는 iOS 및 Mac 앱용 모델 레이어 개체를 관리하기 위해 Apple에서 제공하는 프레임워크입니다. 핵심 데이터를 사용하여 애플리케이션 내에서 저장, 검색, 추적, 수정 및 필터링할 수 있습니다. Core Data는 비휘발성 스토리지에 SQLite를 사용하지만 단순한 데이터베이스가 아닙니다. Core Data는 데이터 유효성 검사, 데이터 지연 로드, 실행 취소 및 다시 실행 등을 포함하여 데이터베이스보다 훨씬 더 많은 작업을 수행합니다. 이 게시물에서는 SwiftUI 애플리케이션 내에서 Core Data를 사용하는 방법을 살펴봅니다.

SwiftUI와 같은 사용자 인터페이스와 "코어 데이터 사용"모듈이 선택된 단일 보기 iOS 애플리케이션을 생성하여 시작하겠습니다.



이제 Core Data를 사용하여 SwiftUI 프로젝트를 만들었으므로 두 가지를 찾을 수 있습니다.

우리의 데이터 모델인 Demo.xcdatamodeld라는 새 파일을 찾을 수 있습니다.
SceneDelegate 및 AppDelegate 파일에서 몇 가지 핵심 데이터 설정 코드를 찾을 수 있습니다.

Xcode 템플릿은 Core Data를 SwiftUI 프로젝트에 설정하기 위해 두 가지 기본 작업을 수행합니다.
장치에서 데이터를 로드하고 저장하는 영구 컨테이너를 만듭니다.
뷰에서 모든 데이터에 액세스할 수 있는 SwiftUI 주입.

이제 우리는 핵심 데이터와 함께 저장하고 싶은 것과 다시 검색하려는 것을 구현해야 합니다.

이제 새 파일 Demo.xcdatamodeld를 열고 하단에 있는 엔티티 추가 버튼을 클릭하고 필요에 따라 엔티티 이름을 바꾸고 정의된 유형으로 속성을 추가하십시오.


데이터 추가



Core Data로 객체를 추가하려면 SwiftUI 환경에 있는 관리 객체 컨텍스트에 액세스해야 합니다. @Environment 속성 래퍼를 사용하면 관리 개체 컨텍스트를 가져와 사용할 속성에 할당할 수 있습니다.

@Environment(\.managedObjectContext) var moc

이제 뷰 내부에 버튼을 생성하여 데이터를 생성하고 우리를 위해 생성된 Core Data 클래스의 도움으로 관리 객체 컨텍스트에 저장할 것입니다.

데이터를 생성하는 버튼 액션 코드:

GenerateData () {
  let names = ["MS Dhoni", "Faf du plessis", "Sam Curran", "Shane Watson"]
  let emails = ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]

  let index = Int.random(in: 0..<4);

  let player = Team_CSK(context: self.moc)
  player.id = UUID()
  player.name = names[index]
  player.email = emails[index]
}

데이터를 관리 개체 컨텍스트의 도움으로 생성된 데이터를 저장합니다.
버튼 동작 기능의 끝에 다음 줄을 추가합니다.

try? self.moc.save()

데이터 검색



Core Data에서 정보 검색은 @FetchRequest라는 래퍼 클래스에 의해 수행됩니다. 쿼리할 엔터티와 정렬하려는 결과의 두 가지 매개 변수를 사용합니다.

@FetchRequest(entity: Team_CSK.entity(), sortDescriptors: []) var team_csk: FetchedResults<Team_CSK>

이렇게 하면 정렬 없이 엔터티에 대한 가져오기 요청이 생성되고 FetchedResults 유형의 속성에 배치됩니다. 이를 통해 해당 속성을 일반 Swift 배열로 사용할 수 있습니다.

버튼 아래에 목록을 만들고 속성의 모든 데이터를 나열합니다.

var body: some View {
    VStack {
      Button(action: {
        self.GenerateData()
      }) {
        Text("Add Data")    
      }
      List {
        ForEach(team_csk, id: \.id) { player in
            Text(player.name ?? "Unknown")
            Text(player.email ?? “Unknown”)
        }
      }
    }
}

참고: 모든 핵심 데이터 속성은 선택 사항입니다.

이제 코드를 실행하면 "데이터 추가"버튼을 클릭할 때마다 목록에 데이터가 추가됩니다. 다시 시작하더라도 Core Data가 데이터를 저장하기 때문에 여전히 데이터를 볼 수 있습니다.

Core Data로 데이터를 저장하고 검색하는 방법입니다. 수정, 삭제, 데이터 변경 추적, 술어 및 복잡한 관계형 데이터베이스 추가와 같이 Core Data로 수행할 수 있는 작업이 많이 있습니다. 이와 같은 기사를 더 보려면 이 공간을 보십시오!

좋은 웹페이지 즐겨찾기