【问题标题】:In Swift, how does one manipulate an object inside a typealias?在 Swift 中,如何在 typealias 中操作对象?
【发布时间】:2016-07-07 14:33:50
【问题描述】:

我有一个类型别名,我想在将其中一个对象作为一个完成处理程序接收之后并在将其发送给另一个之前对其进行操作。所以

typealias GalleryResponse = (gallery: MLGallery?, error: NSError?) -> ()

以及我想干预 typealias 的函数:

func getGalleryForDiscover(onCompletion: galleryResponse) {

    let endpointURL = kGalleryURL + kMetaDataFilter + kLimitURL20

    /// Would like to do something here with the MLGallery object in the galleryResponse closure.   

    makeRequestToCurbsAt(endpointURL, completionHandler: onCompletion)
}

我如何获得 MLGallery 对象 - 对其进行操作 - 然后将其发送出去?

【问题讨论】:

  • 你的问题真的很模糊。尝试提供有关 MLGallery 的更多详细信息
  • typealias 表示确切的类型别名。在您的情况下,galeryResponse 是具有签名的函数的别名(图库:MLGallery?,错误:NSError?)->()。不多,不多....
  • 您在您传递给 getGalleryForDiscover 函数的 galleryResponse 闭包中操作 galleryResponse 中的图库

标签: swift type-alias


【解决方案1】:

您为makeRequestToCurbsAt 提供自己的完成处理程序,然后您 操纵传递给该处理程序的MLGallary 实例,然后将其传递给原始处理程序。像这样:

func getGalleryForDiscover(onCompletion: galleryResponse) {
    let endpointURL = kGalleryURL + kMetaDataFilter + kLimitURL20

    makeRequestToCurbsAt(endpointURL, completionHandler: {
        (gallery: MLGallery?, error: NSError?) in
      // do something with gallery

      // invoke the original
      onCompletion (gallery: gallery, error: error)
    })
}

注意:真的,真的,你的 typealias 标识符应该大写为GalleryResponse

【讨论】:

  • 在清理提供该画廊的供应商的代码时,我忘记将 G 大写。
  • 谢谢@GoZoner——正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
相关资源
最近更新 更多