【问题标题】: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 ,更新问题

标签: swift photosframework


【解决方案1】:

它用作PHImageRequestOptions 类中的闭包,例如传递给PHImageManagerrequestImageForAsset: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&lt;ObjCBool&gt;, [NSObject : AnyObject]?) -&gt; Void

这是一个将元组(Double, NSError?, UnsafeMutablePointer&lt;ObjCBool&gt;, [NSObject : AnyObject]?)作为参数并返回Void的闭包

编辑:

这也意味着无论何时你想声明一个PHAssetImageProgressHandler,你都应该这样声明:

 let handler : PHAssetImageProgressHandler = { (progress, error, stop, info) in 
   // your code
 }

【讨论】:

  • 感谢您的回答艾马克! :)
猜你喜欢
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 2020-11-24
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多