我遇到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
答案 0 :(得分:0)
编译器会告诉您哪里出了问题。您使用guard 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
}
}