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>
'SwiftUI > Appendix A' 카테고리의 다른 글
What is the @GestureState property wrapper? (0) | 2019.11.22 |
---|---|
What is the @Binding property wrapper? (0) | 2019.11.22 |
What is the @Environment property wrapper? (0) | 2019.11.22 |
What is the @EnvironmentObject property wrapper? (0) | 2019.11.22 |
What is the @ObservedObject property wrapper? (0) | 2019.11.21 |
What is the @Published property wrapper? (0) | 2019.11.21 |
What is the @State property wrapper? (0) | 2019.11.21 |
Understanding property wrappers in Swift and SwiftUI (0) | 2019.11.21 |