簡體   English   中英

在對象數組中查找對象 Swift

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM