迭代并添加到 RxSwift 中的数组

Iterating over and adding to an array in RxSwift

我正在发出一个网络请求,我从中获得了一堆用户,我还获得了一个包含 userId 属性 的 emailDetails 对象。我正在尝试遍历来自网络请求的用户,以匹配来自 emailDetails

的所有 userId

我不确定如何迭代,我知道枚举存在于 RxSwift 中。

self.emailRecipients = networkRequestToGetUser
            .asObservable()
            .map { users in users.filter {[=10=].userId == 
             emailDetails.userIds }.first }
            .map {correctUsers in return correctUsers?.email}
            .unwrap()

我收到错误:二元运算符“==”不能应用于 'String' 和“[String]”

类型的操作数

据我了解您的代码片段,您的问题实际上与 RxSwift 无关。显然 emailDetails.userIds 是一个字符串数组 [String]。您可以在映射时使用此检查数组是否包含 userId

    .map { users in users.filter { emailDetails.userIds.contains([=10=].userId) }.first }

获得第一场比赛。如果你想把它们都放在一个数组中,只需放下 .first 并映射到电子邮件字段:

self.emailRecipients = networkRequestToGetUser
        .asObservable()
        .map { users in 
            users.filter {
                emailDetails.userIds.contains([=11=].userId)
            }.map { [=11=].email } 
        }

获取电子邮件地址数组的 Observable。要获得实际地址,请不要忘记 subscribe() 到那个 emailRecipients-Observable。