无法分配值:“ downloadURL”是一个常量

时间:2019-05-06 16:32:22

标签: swift

我遇到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

1 个答案:

答案 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
    }   
}