[英]Find Object in Object Array Swift
我有一個LeaderboardUser()
類型的自定義對象數組。 該對象包含一個字符串變量“uid”、“email”。
我正在嘗試聲明以識別給定的 uid 是否與LeaderBoard
的 uid 匹配
if self.allFriends.contains() {
// Remove user
Database.database().reference().child("Users").child(Auth.auth().currentUser!.uid).child("Friends").child(self.uid).removeValue()
} else {
// Add user
let key = Database.database().reference().child("Users").childByAutoId().key
let friends = ["uid" : "\(self.uid)"] as [String : Any]
let totalList = ["\(key!)" : friends]
Database.database().reference().child("Users").child(Auth.auth().currentUser!.uid).child("Friends").updateChildValues(totalList)
}
有什么方法可以搜索 UID 參數嗎? 我嘗試了 contains() bool,但我不知道它是什么以及如何工作。
您只需要contains(where:
此處使用contains(where:
方法。
if self.allFriends.contains(where: { $0.uid == uidOfLeaderBoard }) {
//...
}
內容參數 func 是一個閉包,它將序列的一個元素作為其參數並返回一個布爾值,該值指示傳遞的元素是否表示匹配
@inlinable public func contains(where predicate: (Element) throws -> Bool) rethrows -> Bool
你可以像這樣使用它:
if allFriends.contains(where: { (leaderboardUser) -> Bool in
return leaderboardUser.uid == idYouWantToFind
}) {
}
或使用排序版本:
if allFriends.contains(where: { $0.uid == idYouWantToFind}) {
}
如果你讓你的 LeaderboardUser 對 Equatable 協議感到舒適,你可以像這樣使用:
class LeaderboardUser: Equatable {
var uid: String = ""
var email: String = ""
static func == (lhs: LeaderboardUser, rhs: LeaderboardUser) -> Bool {
return lhs.uid == rhs.uid
}
}
if allFriends.contains(userWantToFind) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.