티스토리 뷰
Swift는 인스턴스 변수가 다 초기화되지 않으면 인스턴스 변수를 사용할 수 없다.
예를 들어, 다음과 같이 groupName 인스턴스 변수를 이용해서 predicate를 만들게 되면 에러가 발생한다.
struct ItemListView: View {
@Environment(\.managedObjectContext) private var viewContext
@State private var isShowingNewItemSheet = false
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.name, ascending: true)],
predicate: NSPredicate(format: "itemGroup.name == %@", groupName),
animation: .default)
private var items: FetchedResults<Item>
let groupName: String
따라서 인스턴스 변수로 predicate를 만들려면 이니셜라이저에서 처리해야 한다.
struct ItemListView: View {
@FetchRequest private var items: FetchedResults<Item>
let groupName: String
init(groupName: String) {
self.groupName = groupName
_items = FetchRequest<Item>(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.name, ascending: true)],
predicate: NSPredicate(format: "itemGroup.name == %@", groupName)
)
}
'CoreData' 카테고리의 다른 글
[CoreData] undo() / redo() / reset() / rollback() (0) | 2023.09.02 |
---|
댓글