是否将图像URL字符串与Swift中的可视协议一致?
我正在尝试在我的是否将图像URL字符串与Swift中的可视协议一致?,swift,swift-protocols,Swift,Swift Protocols,我正在尝试在我的Swift项目中实现pod包,根据文档,我需要创建符合以下可视协议的项目集合 如何使下面我的for循环中的图像字符串符合下面的可查看协议 协议: public enum ViewableType: String { case image case video } public protocol Viewable { var type: ViewableType { get } var assetID: String? { get } va
Swift
项目中实现pod包,根据文档,我需要创建符合以下可视
协议的项目集合
如何使下面我的for循环
中的图像字符串
符合下面的可查看协议
协议:
public enum ViewableType: String {
case image
case video
}
public protocol Viewable {
var type: ViewableType { get }
var assetID: String? { get }
var url: String? { get }
var placeholder: UIImage { get }
func media(_ completion: @escaping (_ image: UIImage?, _ error: NSError?) -> Void)
}
这是我的代码:
var images = [String]()
var viewableImages = [Viewable]()
override func viewDidLoad() {
loadViewableImages()
}
fileprivate func loadViewableImages(){
viewableImages.removeAll()
for image in images{
viewableImages.append(image) //need to append a Viewable type image not a String
}
}//end func
我认为更好的选择是创建一个单独的类(Image
,在本例中),该类将确认Viewable
协议:
类图像:可查看{
变量类型:可视类型{
返回图像
}
让assetID:String?=UUID().uuidString
让占位符=UIImage()
让url:String?
init(url:String){
self.url=url
}
func媒体(uu完成:@转义(uu图像:UIImage?,uu错误:NSError?->Void){
guard let url=url else{
完成(无,无)
返回
}
guard let imageURL=URL(字符串:URL)else{
完成(无,无)
返回
}
URLSession.shared.dataTask(带有:imageURL){(数据、响应、错误)在
DispatchQueue.main.async{//必须在主线程上调用对UI的所有更改
如果let error=error{
打印(“错误:\(错误)”)
完成(无,错误)
返回
}
完成(UIImage(数据:数据),无)
}
}1.简历()
}
}
您需要将循环更改为:
用于图像中的图像{
附加(图像(url:Image))
}