os.system
в порядке, но как-то датировано. Это также не очень безопасно. Вместо этого попробуйте subprocess
. subprocess
не вызывает sh напрямую и поэтому более безопасен, чем os.system
.
Получить дополнительную информацию здесь .
Это не сработает:
storageRef.downloadURL(completion: { (URL, Error) -> Void in
if (Error != nil) {
//handle any errors
} else {
//get download url
let photoUrl = URL?.absoluteString
}
self.sendDataToDatabase(photoUrl: photoUrl!)
})
photoUrl будет доступен только в предложении else, поскольку именно там он определен, и вы не можете использовать его вне этой области.
Кроме того, это:
func sendDataToDatabase(photoUrl: photoUrl!)
, вероятно, должно быть:
func sendDataToDatabase(photoUrl: String)
Также неплохо не называть переменные URL
и Error
, поскольку они идентичны к URL и классам ошибок. Назовите их url
и error
вместо.
Есть много проблем.
Вы должны вызывать sendDataToDatabase
только в ветви else
и объявлять параметры начальными строчными буквами. Параметры , а не типов.
storageRef.downloadURL(completion: { (url, error) -> Void in
if let error = error {
//handle any errors
} else {
//get download url
let photoUrl = url!.absoluteString
self.sendDataToDatabase(photoUrl: photoUrl)
}
})
и вы должны объявить тип в функции
func sendDataToDatabase(photoUrl: String) { ...