如何通过 Swift 中的 .success 完成发送 URL?
How to send a URL via .success completion in Swift?
我有一个 StorageManager.swift 单例 class,它是一个 class 用于管理 FireBase 存储和其中的一个函数:
public func downloadURL(for path: String, completion: @escaping (Result<String, Error>) -> Void)
{
let reference = storage.child(path)
reference.downloadURL(completion: {url, error in
guard let url = url, error == nil else
{
completion(.failure(StorageErrors.failedToGetDownload))
return
}
completion(.success(url))
})
}
编译器给出如下错误:“无法将类型 'URL' 的值转换为预期的参数类型 'String'”
通过使用此 public 功能,我想在另一个 class 中下载图像。这是
代码:
StorageManager.shared.downloadURL(for: path, completion: {[weak self] result in
switch result
{
case .success(let url):
self?.downloadImage(imageView: imageView, url: url)
case .failure(let error):
print("error when fetching url download\(error)")
}
})
这边的错误是:“无法将类型 'String' 的值转换为预期的参数类型 'URL'”
我试过这样发送:
completion(.success(url.absoluteString))
并再次将其转换为 URL:
self?.downloadImage(imageView: imageView, url: url as! URL)
但失败了。
如何正确传递 URL?
您的 downloadURL()
函数声明结果是一个字符串:
将其更改为 return 一个带有 URL 的结果:
public func downloadURL(for path: String, completion: @escaping (Result<URL, Error>) -> Void)
我有一个 StorageManager.swift 单例 class,它是一个 class 用于管理 FireBase 存储和其中的一个函数:
public func downloadURL(for path: String, completion: @escaping (Result<String, Error>) -> Void)
{
let reference = storage.child(path)
reference.downloadURL(completion: {url, error in
guard let url = url, error == nil else
{
completion(.failure(StorageErrors.failedToGetDownload))
return
}
completion(.success(url))
})
}
编译器给出如下错误:“无法将类型 'URL' 的值转换为预期的参数类型 'String'”
通过使用此 public 功能,我想在另一个 class 中下载图像。这是 代码:
StorageManager.shared.downloadURL(for: path, completion: {[weak self] result in
switch result
{
case .success(let url):
self?.downloadImage(imageView: imageView, url: url)
case .failure(let error):
print("error when fetching url download\(error)")
}
})
这边的错误是:“无法将类型 'String' 的值转换为预期的参数类型 'URL'”
我试过这样发送:
completion(.success(url.absoluteString))
并再次将其转换为 URL:
self?.downloadImage(imageView: imageView, url: url as! URL)
但失败了。 如何正确传递 URL?
您的 downloadURL()
函数声明结果是一个字符串:
将其更改为 return 一个带有 URL 的结果:
public func downloadURL(for path: String, completion: @escaping (Result<URL, Error>) -> Void)