繁体   English   中英

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

[英]In Swiftui, I have an array that is @Published. I use .filter on the array but get error that member elements does not exist

object 定义为:

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

然后我将此 object 嵌入为 class 的成员,如下所示:

class CourseRepository: ObservableObject {
    
    private let path: String = "Courses"
    private let store = Firestore.firestore()

    @Published var courses: [Course] = []
...

在下面的代码段中,我只希望 map 结果包含“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)

}

非常感谢对此的任何帮助!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM