Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 4:变量';价值';推断为具有类型';无效';,哪一个可能出乎意料?_Ios_Iphone_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios Swift 4:变量';价值';推断为具有类型';无效';,哪一个可能出乎意料?

Ios Swift 4:变量';价值';推断为具有类型';无效';,哪一个可能出乎意料?,ios,iphone,swift,firebase,firebase-realtime-database,Ios,Iphone,Swift,Firebase,Firebase Realtime Database,我正在尝试将firebase存储中存储的图像的下载URL保存在DB中。我已经看过了,但是我得到了以下错误: 无法在强制中将“Void”类型的值转换为“[String:String]”类型 这发生在以下指示的线路上: storageRef.downloadURL { (url, error) in guard let downloadURL = url else { // Uh-oh, an error occurred! return }

我正在尝试将firebase存储中存储的图像的下载URL保存在DB中。我已经看过了,但是我得到了以下错误:

无法在强制中将“Void”类型的值转换为“[String:String]”类型

这发生在以下指示的线路上:

storageRef.downloadURL { (url, error) in
    guard let downloadURL = url else {
        // Uh-oh, an error occurred!
        return
    }
    //database integration
let ref = Database.database().reference()
let usersRef = ref.child("usersPosts")

let uid = Auth.auth().currentUser?.uid
let newUserRef = usersRef.child(uid!).child("post\(takePicViewController().finalPost + PhotoArray.sharedInstance.numberPost)")

PhotoArray().dowloadImgUrls.append(("\(downloadURL)"))
let downloadUrlArray = PhotoArray().dowloadImgUrls
var value = newUserRef.setValue(["Image\(self.number)": "\(downloadUrlArray)"])// WARNING IS HERE

addImageURLToDatabase(uid: uid!, values: value as [String : String]) // ERROR IS HERE
在这一行,我将把贝娄作为参考(虽然上面也指出了),是得到一个警告,也发现贝娄

var value = newUserRef.setValue(["Image\(self.number)": "\(downloadUrlArray)"])
变量“value”推断为具有类型“Void”,这可能是意外的

编辑:我忘记包含正在调用的函数:

    func addImageURLToDatabase(uid:String, values:[String:String]) {
    let ref = Database.database().reference()
    let usersReference = ref.child("usersPosts").child((Auth.auth().currentUser?.uid)!)

    usersReference.updateChildValues(values) { (error, ref) in
        if (error != nil) {
            print(error)
            return
        }
    }

}

谢谢你的帮助

这是因为函数
newUserRef.setValue(…)
不返回任何内容。将代码更改为:

let value = ["Image\(self.number)": "\(downloadUrlArray)"]
newUserRef.setValue(value)
addImageURLToDatabase(uid: uid!, values: value)

调用
newUserRef.setValue
不会返回值,它只是存储它

看起来这正是您想要的:

var value = ["Image\(self.number)": "\(downloadUrlArray)"]
newUserRef.setValue(value)

addImageURLToDatabase(uid: uid!, values: value as [String : String]) 

但是,当我运行在数据库中看到的代码时,我能够消除这些错误:Image0:,我打算尝试在以下行中执行一些操作,让value=[“Image(self.number)”:“(downloadUrlArray[takePicViewController().numberPost])”,但我收到一个错误,说我不能用Int为字符串下标。我这样做对吗?如果是,我该如何解决这个问题。如果不是,我应该更改什么?变量的类型是什么?您可以按住选项并单击变量的名称吗?var dowloadImgUrls=[String]()我运行了它,但这次它只是在发送数据后崩溃了,不完全是在我按下时,而是在几秒钟后(20)。并且数据库没有添加任何新值。请使用新代码打开一个新问题,并说明您遇到的问题以及崩溃的行。