加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – .enumerateGroupsWithTypes阻止停止参数Swift(Xcode 6 be

发布时间:2020-12-14 18:04:01 所属栏目:百科 来源:网络整理
导读:今天我将 Xcode 6升级到beta 5(来自beta 1),你可以想象我发现我之前完美运行的 Swift应用程序充满了各种错误(好吧,从beta 1有很多变化).在所有错误中,有一个我无法弄清楚如何修复.它与swift闭包有关,特别是.enumerateGroupsWithTypes方法的enumerationBlock
今天我将 Xcode 6升级到beta 5(来自beta 1),你可以想象我发现我之前完美运行的 Swift应用程序充满了各种错误(好吧,从beta 1有很多变化).在所有错误中,有一个我无法弄清楚如何修复.它与swift闭包有关,特别是.enumerateGroupsWithTypes方法的enumerationBlock参数.这是代码:

assetLib.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos),usingBlock: {
(group: ALAssetsGroup?,stop: CMutablePointer<ObjCBool>) in

...

},failureBlock: {
  (error: NSError!) in

  ...

})

这确实在Swift(Xcode 6 beta 1)中完美运行.但现在,我得到2个错误:

>

” ‘UnsafeMutablePointer’ is not a subtype of ‘error type’ “

>

” Use of undeclared type ‘CMutablePointer’ “

很明显,CMutablePointer不再存在,所以我试图修改stop参数,如:

...,stop: UnsafeMutablePointer<ObjCBool> ...

在这个改变之后,第二个错误显然消失了,但第一个转变为:

” Could not find an overload for ‘init’ that accepts the supplied arguments “

我甚至尝试将UnsafeMutablePointer更改为UnsafePointer,如this post所示.

编辑:

以下是enumerateGroupsWithTypes方法的完整代码:

assetLib.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos),usingBlock: {
    (group: ALAssetsGroup?,stop: UnsafeMutablePointer<ObjCBool>) in
    if group != nil {
    group!.setAssetsFilter(ALAssetsFilter.allPhotos())
    group!.enumerateAssetsAtIndexes(NSIndexSet(index: group!.numberOfAssets()-1),options: nil,usingBlock: {
      (result: ALAsset!,index: Int,stop: UnsafeMutablePointer<ObjCBool>) in
      if result {
        var alAssetRapresentation: ALAssetRepresentation = result.defaultRepresentation()
        url = alAssetRapresentation.url()
      }
      })
    }
    else if group == nil {

      assetLib.assetForURL(url,resultBlock: {
        (asset: ALAsset!) in
        if asset != nil {
        var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
        var iref = assetRep.fullResolutionImage().takeUnretainedValue()
        var image = UIImage(CGImage: iref)


        imageView.image = image

        self.view.addSubview(imageView)

          let mask = CAShapeLayer()
          mask.path = UIBezierPath(ovalInRect: CGRectMake(0,200,200)).CGPath
          mask.frame = CGPathGetPathBoundingBox(mask.path)

          mapView.layer.mask = mask

          self.view.addSubview(mapView)

        }
        },failureBlock: {
          (error: NSError!) in

          NSLog("Error!",nil)
        })
    }

    },failureBlock: {
      (error: NSError!) in

      NSLog("Error!",nil)

    })

解决方法

NSLog(“错误!”,nil)错误,应该是NSLog(“错误!”). (这似乎混淆了Swift编译器并导致无关的错误消息.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读