收集符合协议的项目? :Viewer Swift

收集符合协议的项目? :Viewer Swift

问题描述:

我正在尝试集成Viewer库以查看专辑中的照片和视频。我已经整合了一切, 我不明白这条线意味着什么github链接: 你需要一组符合可视协议的项目的集合。收集符合协议的项目? :Viewer Swift

可视协议:

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) 
} 

这是我们如何使用这个库:

extension CollectionController: ViewerControllerDataSource { 
    func viewerController(_ viewerController: ViewerController, viewableAt indexPath: IndexPath) -> Viewable { 
     return photos[indexPath.row] 
    } 
} 

在这个扩展,我们不得不返回查看和多数民众赞成我的问题。我有PHAssets,但需要使可见类型。怎么做 ?

仅供参考检查浏览器库:https://github.com/bakkenbaeck/Viewer

任何帮助,将不胜感激。

我相信你需要像下面:

extension PHAsset: Viewable { 
    var type: ViewableType { return .image } 
    var assetID: String? { return "item's id" } 
    var url: String? { return "item's url" } 
    var placeholder: UIImage { return defaultImage } 

    func media(...) { 
     // implement this function 
    } 
} 

,或者你可以创建自己的类:

class MyAsset: Viewable { 
    var asset: PHAsset 
    var type: ViewableType { return .image } 

    ... and others ... 

    init(asset: PHAsset) { 
     self.asset = asset 
    } 
} 
+0

添加符合'Viewable'与扩展似乎是办法走。除非您需要额外的存储属性,否则不应该需要包装类,并且实际上由于性能原因而被避免。 – Raphael