반응형

 

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

 

[원문 : https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-fetchrequest-property-wrapper]

 

What is the @FetchRequest property wrapper?

 

SwiftUI는 Core Data 가져오기 요청 작업을 위한 전용 property wrapper를 제공하고, 추가 로직을 작성하지 않고, 데이터를 SwiftUI 뷰에 직접 포함시킬수 있습니다.

 

@FatchRequest에 최소한 2개의 값을 제공해야 합니다: 읽기 원하는 entity와 데이터를 정렬하기 위한 설명. 필요에 따라 데이터를 필터링(filter)하는 조건(predicate)을 선택적으로 제공할 수도 있습니다.

 

중요 : @FetchRequest를 사용하기 전에 먼저 environment에 Core Data 관리 객체 컨텍스트(context)를 넣어야 합니다 - 이를 처리하는 방법에 대해서 how to access a Core Data managed object context from a SwiftUI view를 보세요.

 

기본 예제로, 다음과 같이 Core Data 컨텍스트(context)로 부터 모든 사용자들을 보여줄 수 있습니다.

@FetchRequest(
    entity: User.entity(),
    sortDescriptors: []
) var users: FetchedResults<User>

 

데이터에 정렬을 적용하지 않았으므로, 해당 사용자들은 추가된 순서로 반환 될 것입니다. @FetchReques는 자동으로 @ObservedObject이므로, List, ForEach나 비슷한 것에서 데이터를 사용한 경우에, 기본 데이터가 변경될때 자동으로 갱신됩니다.

 

: 읽기 쉽게 만들기 위해 @FatchRequest 코드를 여러줄로 나누지만, 필수는 아닙니다.

 

데이터를 정렬하고자 하는 경우, 다음과 같이 정렬 설명자(sore descriptors)를 keypaths의 배열로 제공하세요.

@FetchRequest(
    entity: User.entity(), 
    sortDescriptors: [
        NSSortDescriptor(keyPath: \User.name, ascending: false)
    ]
) var users: FetchedResults<User>

 

원하는 만큼 제공할 수 있고, 순서대로 처리될 것입니다.

 

조건(predicate)을 추가하기 위해서, 다음과 같이 포멧을 사용해서 NSPredicate를 만듭니다.

@FetchRequest(
    entity: User.entity(),
    sortDescriptors: [
        NSSortDescriptor(keyPath: \User.name, ascending: false),
    ],
    predicate: NSPredicate(format: "surname == %@", "Hudson")
) var users: FetchedResults<User>

 

반응형
Posted by 까칠코더
,