Swift Firebase 检查值是不是存在

Posted

技术标签:

【中文标题】Swift Firebase 检查值是不是存在【英文标题】:Swift Firebase Check if Value ExistsSwift Firebase 检查值是否存在 【发布时间】:2017-08-25 22:28:24 【问题描述】:

我正在尝试检查用户内部是否存在值。我基本上正在创建一个检查来激活或停用按钮是否存在值。我有一个关注/取消关注系统,但问题是如果一个用户尚未添加某些值并且用户想要关注它们,则应用程序将崩溃。所以我只想停用按钮,直到用户添加将使按钮处于活动状态的值。我一直在尝试下面的代码,但没有运气。我想检查他们是否创建了一个值“snapchatURL”,它是否包含 URL 并不重要,我只需要知道该值是否存在或不存在 URL。

databaseRef.child("Businesses").child(self.otherUser?["uid"] as! String).queryOrdered(byChild: "snapchatURL").observe(.value, with:  (snapshot) in
        if(snapshot.exists()) 
            self.followButton.isEnabled = true
            print("They added their social media")
         else 
            self.followButton.isEnabled = false
            print("They did not add their social media")
        
    )  (error) in
        print(error.localizedDescription)
    


@IBAction func didTapFollow(_ sender: Any) 

    let followersRef = "followers/\(self.otherUser?["uid"] as! String)/\(self.loggedInUserData?["uid"] as! String)"

    let followingRef = "following/" + (self.loggedInUserData?["uid"] as! String) + "/" + (self.otherUser?["uid"] as! String)


    if(self.followButton.titleLabel?.text == "Favorite") 
        print("follow user")

        let followersData = ["email":self.loggedInUserData?["email"] as! String]
        let followingData = ["businessName":self.otherUser?["businessName"] as! String, "businessStreet":self.otherUser?["businessStreet"] as! String, "businessCity":self.otherUser?["businessCity"] as! String, "businessState":self.otherUser?["businessState"] as! String, "businessZIP":self.otherUser?["businessZIP"] as! String, "businessPhone":self.otherUser?["businessPhone"] as! String, "businessWebsite":self.otherUser?["businessWebsite"] as! String,"businessLatitude":self.otherUser?["businessLatitude"] as! String, "businessLongitude":self.otherUser?["businessLongitude"] as! String, "facebookURL":self.otherUser?["facebookURL"] as! String, "twitterURL":self.otherUser?["twitterURL"] as! String, "instagramURL":self.otherUser?["instagramURL"] as! String, "googleURL":self.otherUser?["googleURL"] as! String, "yelpURL":self.otherUser?["yelpURL"] as! String, "foursquareURL":self.otherUser?["foursquareURL"] as! String, "snapchatURL":self.otherUser?["snapchatURL"] as! String]


        let childUpdates = [followersRef:followersData, followingRef:followingData]
        databaseRef.updateChildValues(childUpdates)

        print("data updated")

     else 

        let followersRef = "followers/\(self.otherUser?["uid"] as! String)/\(self.loggedInUserData?["uid"] as! String)"
        let followingRef = "following/" + (self.loggedInUserData?["uid"] as! String) + "/" + (self.otherUser?["uid"] as! String)

        let childUpdates = [followingRef:NSNull(),followersRef:NSNull()]
        databaseRef.updateChildValues(childUpdates)
    

【问题讨论】:

请更新您的答案,说明当前代码做了哪些您不希望它做的事情,并包含您的数据结构。 我添加了我的数据结构。然而,该结构显示这些“URL”值存在。我需要帮助才能对“snapchatURL”进行查询。现在从什么测试它不起作用。当我创建没有该数据的个人资料时,它会打印出我的消息“他们添加了他们的社交媒体” 如果它没有“snapchatURL”,我希望禁用该按钮,否则如果用户尝试点击该按钮,应用程序将崩溃 【参考方案1】:

我明白了。无需进行任何类型的查询,只需一个简单的“.child”:)

databaseRef.child("Businesses").child(self.otherUser?["uid"] as! String).child("snapchatURL").observe(.value, with:  (snapshot) in
        if(snapshot.exists()) 
            self.followButton.isEnabled = true
            print("They added their social media")
         else 
            self.followButton.isEnabled = false
            print("They did not add their social media")
        
    )  (error) in
        print(error.localizedDescription)
    

【讨论】:

以上是关于Swift Firebase 检查值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查用户名是不是已经存在:Swift、Firebase

检查firebase数据库中是不是存在值

检查 Firebase 中是不是存在密钥

如何检查 Firebase 实时数据库(Dart/Flutter)中是不是存在值?

如何检查 Unity 的 Firebase 数据库中是不是已存在键/值

检查 JSON 数组中是不是存在值,如果不存在则检查下一个数组(Swift / SwiftUI)