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

时间:2017-09-02 07:44:09

标签: ios swift viewer

我正在尝试整合Viewer库,以查看相册中的照片和视频。除了一个,我整合了所有东西。 我不明白这条线在github链接上意味着什么: 您需要一系列符合可查看协议的项目。

可见协议:

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

在此扩展程序中,我们必须返回Viewable,这就是我的问题。我有PHAssets但需要制作可视类型。怎么做?

供参考检查查看器库:https://github.com/bakkenbaeck/Viewer

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我相信您需要以下内容:

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