收集符合协议的项目? :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
}
}
添加符合'Viewable'与扩展似乎是办法走。除非您需要额外的存储属性,否则不应该需要包装类,并且实际上由于性能原因而被避免。 – Raphael