SwiftUI在FetchRequest中使用带有结构参数的谓词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI在FetchRequest中使用带有结构参数的谓词相关的知识,希望对你有一定的参考价值。

如何将@FetchRequest与传递给struct的参数一起使用?

struct TodoItemView: View {
    var todoList: TodoList
    @FetchRequest(
        entity: TodoItem.entity(),
        sortDescriptors: [NSSortDescriptor(key: "order", ascending: true)],
        predicate: NSPredicate(format: "todoList == %@", todoList)
    ) var todoItems: FetchedResults<TodoItem>
    ...

我通过todoListOne设置为TodoItemTodoList关系。

这给了我错误:

无法在属性初始化程序中使用实例成员'todoList';属性初始化程序在“自我”可用之前运行

如果无法在初始化程序中使用@FetchRequest,如何处理此关系?另外,我应该在这里某处使用todoList.objectID吗?

答案

想通了:

var todoList: TodoList
@FetchRequest var todoItems: FetchedResults<TodoItem>

init(todoList: TodoList) {
    self.todoList = todoList
    self._todoItems = FetchRequest(
        entity: TodoItem.entity(),
        sortDescriptors: [NSSortDescriptor(key: "order", ascending: true)],
        predicate: NSPredicate(format: "todoList == %@", todoList)
    )
}

感谢类似的回答:SwiftUI View and @FetchRequest predicate with variable that can change

以上是关于SwiftUI在FetchRequest中使用带有结构参数的谓词的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何在 init 中使用 fetchRequest 更新数据

带有 NSPredicate 的 FetchRequest 不会在新条目上更新

使用 CloudKit + CoreData,如何在没有 SwiftUI 的 @FetchRequest 的情况下从远程云更新中更新 UI?

如何在 SwiftUI 中限制 FetchRequest 中的结果数

SwiftUI 中的@FetchRequest

在@FetchRequest 中输入一个动态值,以从 SwiftUI 中的核心数据中获取单个实体