某些数据未从Firebase数据库Swift 3中读取

时间:2017-09-18 21:21:01

标签: swift firebase firebase-realtime-database

我在firebase中有一个类似于enter image description here的数据库 我试图得到关键的网址。但是,我只能获得一些这些键的url,其余的返回nil?我没有看到一个模式,为什么有些键会返回我正在寻找的值而有些不?这是我正在使用的代码

static func getProfilePictureURL(imageID key: String, completionHandler: @escaping (_ return: String?, _ error: String?) -> Void){
        databaseReference.child("userSelfies").child(userIDGlobal).observeSingleEvent(of: .value, with: { (snapshot) in
            // Get user value

        let value = snapshot.value as? [String: Any]
        print(value!["150575773394828"])

        if let url = value?[key] {
            print("url",url)
            //completionHandler(url, nil)
        }

    }) { (error) in
        print(error.localizedDescription)
        completionHandler(nil,  error.localizedDescription)

    }
}

我已尝试过所有内容,是的,重新加载页面,因此数据肯定存在。

2 个答案:

答案 0 :(得分:2)

所以看起来函数getProfilePictureURL只需要获取imageID key的图像,是吗?如果只询问您正在寻找的密钥会发生什么?

static func getProfilePictureURL(imageID key: String, completionHandler: @escaping (_ return: String?, _ error: String?) -> Void){
        databaseReference.child("userSelfies/\(userIDGlobal)/\(key)).observeSingleEvent(of: .value, with: { (snapshot) in
            // Get user value

        let url = snapshot.value as? String
        print("url",url)
        //completionHandler(url, nil)

    }) { (error) in
        print(error.localizedDescription)
        completionHandler(nil,  error.localizedDescription)

    }
}

答案 1 :(得分:0)

好的,问题是儿童的道路太深了。 Jen所建议的几乎是正确的,但他们走的路径,(关键),不应该在那里。因为snapshot.value和NSDictionary一样返回,带有键值对,我应该做的是将snapshot.value转换为? [String:AnyObject],然后解包并使用带有下标[key]的值来获取我想要的值。 8个小时的搜索和实验,我终于找到了swift firebase数据库...