【发布时间】:2020-02-26 20:01:18
【问题描述】:
是否可以在 SwiftUI 的 @FetchRequest 属性包装器内的谓词中使用核心数据记录?
我有一个项目列表和一个任务列表。我想点击一个项目并导航到该项目的相关任务列表。我似乎找不到以 SwiftUI 可以看到 在 @FetcheRequest 初始化之前看到的方式传入父项目。
我尝试将父项目放在 EnvironmentObject 中。当我从 ProjectListView 导航到 TaskListView 时调用它。
TaskListView()
.environment(\.managedObjectContext, self.managedObjectContext)
.environmentObject(self.projectToEdit)
然后在我添加的TaskListView中尝试了这个:
@Environment(\.managedObjectContext) var managedObjectContext
@EnvironmentObject var parentProject: Project
@FetchRequest(
entity: Task.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Task.name, ascending: true)
],
predicate: NSPredicate(format: String(format: "%@%@", "taskProject", " == %@"), parentProject)
) var tasks: FetchedResults<Task>
我在谓词行收到以下错误。
不能在属性初始化器中使用实例成员“parentProject”;属性初始化器在“self”可用之前运行
那么有没有办法以某种方式编写可以使用父项目的谓词?将项目传递给任务视图似乎不会起作用。我还能如何在这样的谓词中使用记录?
【问题讨论】: