For loop 在RxSwift中迭代并添加到数组
我提出了一个网络请求,从中我得到了一群用户,我还得到了一个emailDetails对象,该对象也包含userId属性。我试图迭代来自网络请求的用户,以匹配来自emailDetails的所有用户ID 我不确定如何迭代,我知道RxSwift中存在枚举For loop 在RxSwift中迭代并添加到数组,for-loop,iteration,rx-swift,For Loop,Iteration,Rx Swift,我提出了一个网络请求,从中我得到了一群用户,我还得到了一个emailDetails对象,该对象也包含userId属性。我试图迭代来自网络请求的用户,以匹配来自emailDetails的所有用户ID 我不确定如何迭代,我知道RxSwift中存在枚举 self.emailRecipients = networkRequestToGetUser .asObservable() .map { users in users.filter {$0.userId
self.emailRecipients = networkRequestToGetUser
.asObservable()
.map { users in users.filter {$0.userId ==
emailDetails.userIds }.first }
.map {correctUsers in return correctUsers?.email}
.unwrap()
我得到的错误:二进制运算符“==”不能应用于“String”和“[String]”类型的操作数。据我所知,您的问题实际上与RxSwift无关。显然,emailDetails.userIds是一个字符串数组[String]。您可以在映射时使用以下选项检查数组是否包含用户ID:
.map { users in users.filter { emailDetails.userIds.contains($0.userId) }.first }
第一场比赛。如果要将它们全部放在一个数组中,只需删除.first并映射到电子邮件字段:
self.emailRecipients = networkRequestToGetUser
.asObservable()
.map { users in
users.filter {
emailDetails.userIds.contains($0.userId)
}.map { $0.email }
}
获取电子邮件地址数组的可观察值。要获得实际地址,别忘了订阅emailRecipients Observable。以下是对我有用的答案。self.emailRecipients=networkRequestUsers.asObservable.map{$0.filter{$0.userId==emailDetails.userIds}}}.map{$0.map{$0.email}}.unwrap