在Swiftui中,我有一个@Published数组.我在数组上使用.filter,但得到成员元素不存在的错误



对象定义为:

struct Course: Identifiable, Hashable, Codable {
@DocumentID var id: String?
var country: String
var createdBy: String
}

然后将该对象作为类的成员嵌入,如下所示:

class CourseRepository: ObservableObject {

private let path: String = "Courses"
private let store = Firestore.firestore()
@Published var courses: [Course] = []
...

在下面的代码片段中,我只希望映射结果包含'createdBy' ==到当前登录用户的uid的球场。但是在.filter语句中,我得到了以下错误:
强调文本

**Value of type 'Published<[Course]>.Publisher.Output' (aka 'Array<Course>') has no member 'createdBy'**

MyCourseRepository.$courses
.filter { $0.createdBy ==  self.authState.loggedInUser!.uid }
.map { courses in courses.map(CourseViewModel.init)}
.assign(to: .MyCourseViewModels, on: self)
.store(in: &cancellables)

}

任何帮助在这个非常感谢!

现在,您正在尝试filterPublisher,而您想要做的是过滤它发送的数组中的项目:

MyCourseRepository.$courses
.map { courseArray in 
courseArray.filter { course in 
course.createdBy == self.authState.loggedInUser!.uid
}
}

最新更新