我在downloadURL = metadata.downloadURL
上遇到问题。 let
是否必须在前面才能使它起作用?当我说
定义与先前的值冲突,并且类型“ StorageMetaData”的值没有成员“ downloadURL”
任何帮助将不胜感激,因为到目前为止我还没有找到任何帮助。
// You can also access to download URL after upload.
storageRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// Uh-oh, an error occurred!
return
}
// Metadata contains file metadata such as size, content type, and download URL
downloadURL = metadata.downloadURL
最佳答案
编译器会告诉您出了什么问题。您使用guard let
创建一个let常量downloadURL
。一旦该常量具有值,就无法更改。然后,您尝试更改其值。那是不允许的。
您的代码令人困惑,因为首先给downloadURL
分配了保护让,然后尝试为downloadURL
分配完全不同的值。 (在第二种情况下,您使用metadata.downloadURL
。
为什么要为downloadURL
分配一个值,然后立即忘记该值并将其替换为其他值?
相反,您可以编写如下代码:
storageRef.downloadURL { (url, error) in
//Use the name `inputURL` to indicate this is the URL passed to the closure
guard let inputURL = url else {
// Uh-oh, an error occurred!
return
}
// Metadata contains file metadata such as size, content type, and download URL
let downloadURL = metadata.downloadURL
}
}
关于swift - 无法分配值:“downloadURL”是一个常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56009151/