符合协议的物品集合 ? : 查看者 Swift

Collection of items that conform to the protocol ? : Viewer Swift

我正在尝试集成查看器库以查看相册中的照片和视频。除了一个,我已经整合了所有东西。 我不明白 github link 这行的意思: 您需要一组符合 Viewable 协议的项目。

可查看协议:

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

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

查看查看器库以供参考: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:

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

    ... and others ...

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