理解快速类型别名
Posted
技术标签:
【中文标题】理解快速类型别名【英文标题】:Understanding swift typealias 【发布时间】:2016-04-28 14:24:31 【问题描述】:作为照片框架的一部分,有一个从 iCloud 下载照片的选项(如果需要)。问题是我不明白如何使用它。
文档说:
var progressHandler: PHAssetImageProgressHandler?
PHAssetImageProgressHandler
在哪里
照片从 iCloud 下载资产数据时调用的块的签名。由 progressHandler 属性使用。
typealias PHAssetImageProgressHandler = (Double, NSError?, UnsafeMutablePointer<ObjCBool>, [NSObject : AnyObject]?) -> Void
但我不知道如何整合它,有什么建议吗?
更新
我正在使用的请求
var options: PHImageRequestOptions = PHImageRequestOptions()
options.networkAccessAllowed = true
options.progressHandler = PHAssetImageProgressHandler
【问题讨论】:
这是一个闭包,一个回调。您能否举例说明您尝试使用回调的哪个 Photos 框架调用? @JAL ,更新问题 【参考方案1】:它用作PHImageRequestOptions
类中的闭包,例如传递给PHImageManager
的requestImageForAsset:targetSize:contentMode:options:
。
语法看起来像
let finalRequestOptions = PHImageRequestOptions()
finalRequestOptions.progressHandler = (progress, error, stop, info) in
// do something with the returned parameters
文档说:
如果您请求的图像的数据不在本地设备上,并且您 已使用 networkAccessAllowed 属性启用下载, 照片会定期调用您的区块以报告进度并允许 取消下载。
nshipster上对PHImageManager
有很好的描述
【讨论】:
谢谢!对 nshipster 的引用是无价的!span> 【参考方案2】:这意味着每当你看到PHAssetImageProgressHandler
时,你实际上应该阅读以下内容:
(Double, NSError?, UnsafeMutablePointer<ObjCBool>, [NSObject : AnyObject]?) -> Void
这是一个将元组(Double, NSError?, UnsafeMutablePointer<ObjCBool>, [NSObject : AnyObject]?)
作为参数并返回Void
的闭包
编辑:
这也意味着无论何时你想声明一个PHAssetImageProgressHandler
,你都应该这样声明:
let handler : PHAssetImageProgressHandler = (progress, error, stop, info) in
// your code
【讨论】:
感谢您的回答艾马克! :)以上是关于理解快速类型别名的主要内容,如果未能解决你的问题,请参考以下文章