【发布时间】:2020-01-12 05:29:17
【问题描述】:
我有一个视图显示团队中使用带有固定谓词“开发人员”的@Fetchrequest 过滤的消息。
struct ChatView: View {
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Message.createdAt, ascending: true)],
predicate: NSPredicate(format: "team.name == %@", "Developers"),
animation: .default) var messages: FetchedResults<Message>
@Environment(\.managedObjectContext)
var viewContext
var body: some View {
VStack {
List {
ForEach(messages, id: \.self) { message in
VStack(alignment: .leading, spacing: 0) {
Text(message.text ?? "Message text Error")
Text("Team \(message.team?.name ?? "Team Name Error")").font(.footnote)
}
}...
我想让这个谓词动态化,以便在用户切换团队时显示该团队的消息。下面的代码给了我以下错误
不能在属性初始化器中使用实例成员“teamName”;属性初始化器在“self”可用之前运行
struct ChatView: View {
@Binding var teamName: String
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Message.createdAt, ascending: true)],
predicate: NSPredicate(format: "team.name == %@", teamName),
animation: .default) var messages: FetchedResults<Message>
@Environment(\.managedObjectContext)
var viewContext
...
我可以使用一些帮助来解决这个问题,到目前为止我无法自己解决这个问题。
【问题讨论】:
标签: swift core-data nspredicate swiftui nsfetchrequest