是否将图像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))
}