前提・実現したいこと
いつも大変お世話になってます!
今回やりたいことはこちら
例
var name = ["太郎", "次郎", "三郎"]
var filteredName = name.filter {$0 != "次郎"}
print(filteredName)
結果
["太郎", "三郎"]
このような動きにしたいのです。
Firestoreから呼び出したデータを構造体で取得した場合。
上記と同じように、配列の中にある要素と一致した要素がある配列をfilterで取り除きたいのですが、うまく機能しません。
やり方が分からずご教授いただければ大変、大変助かります!
何卒よろしくお願いいたします。
発生している問題・エラーメッセージ
下記の*******で囲んだコードだと self.employeeUidで型違いで Binary operator '!=' cannot be applied to operands of type '[String]' and 'String' コンパイルエラーが表示されます。 [self.employeeUid]でコンパイルエラーはおさまりますが、それだと配列の中の要素+employeeUidという形でないと一致しないということになるのは理解してます。 しかしfilter処理は要素同士が該当すれば良いと考えると型違いでエラーが出る意味合いも理解できていません。。。
該当のソースコード
var assignProjectArray = [ProjectInfos]() db.collection("projects").addSnapshotListener { (snapShots, error) in if let error = error{ print("Firestoreから情報取得に失敗しました: ",error) return }else{ self.assignProjectArray.removeAll() let document = snapShots?.documents document?.forEach({ snapShot in let dic = snapShot.data() let project = ProjectInfos(dic: dic) self.assignProjectArray.append(project) ************************* self.assignProjectArray = self.assignProjectArray.filter({$0.assignedEmployeeUid != self.employeeUid}) *************************
試したこと
filter意外にも、contains,mapなどを使い試行錯誤しましたが、結局型違いで同じ状況から抜け出せていません。
それ以外にも、for in を使って二次元配列の存在するindex全てに同じようにfilterを使い試してみましたが同じ状況です。
こういう場合は他に手段があるのでしょうか?
改めてよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー