【问题标题】:SWIFT ALAssetsLibrary not enumerating groupsSWIFT ALAssetsLibrary 未枚举组
【发布时间】:2014-08-07 20:26:11
【问题描述】:

我正在尝试将所有用户图像的缩略图收集到一个数组中,但是当我调用 ALAssetsLibraryenumerateAssetsUsingBlock 方法时,似乎什么也没发生。

import UIKit
import AssetsLibrary

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate  {


@IBOutlet var photoLibView: UICollectionView
var assetLibrary : ALAssetsLibrary = ALAssetsLibrary()


func showCustomLibrary() {
    self.assetLibrary = ALAssetsLibrary()

    var assetsArray : [ALAsset] = []
    var imageArray : [CGImage] = []
    var count = 0
    var countOne = 0
    let assetsType : ALAssetsGroupType = Int(ALAssetsGroupAll)

    var groupBlock : ALAssetsLibraryGroupsEnumerationResultsBlock = {

        (group: ALAssetsGroup!, stop: UnsafePointer<ObjCBool>) in
        println("is goin")
        count++
        var assetBlock : ALAssetsGroupEnumerationResultsBlock = {
            (result: ALAsset!, index: Int, stop: UnsafePointer<ObjCBool>) in
            imageArray.append(result.thumbnail().takeRetainedValue())
            assetsArray.append(result)
            countOne++
        }

        group.enumerateAssetsUsingBlock(assetBlock)


    }
    var groupFailureBlock : ALAssetsLibraryAccessFailureBlock = {
        (NSError) in
        println("errorrrrrrrr")

    }
    assetLibrary.enumerateGroupsWithTypes(assetsType, usingBlock: groupBlock, failureBlock: groupFailureBlock)



    println("number of groups")
    println(count)
    println("number of total assets")
    println(countOne)

    self.photoLibView.insertItemsAtIndexPaths(imageArray)


}


}

当我调用 showCustomLibrary() 时,编译器会打印出number of groups 0 number of total assets 0 fatal error: unexpectedly found nil while unwrapping an Optional value 因为似乎ALAssetsLibrary 的组没有被枚举。 (“is goin”没有被打印出来)。知道这里发生了什么吗?提前致谢!

【问题讨论】:

  • 您找到解决方法了吗?

标签: ios swift closures enumeration alassetslibrary


【解决方案1】:

我发现了问题。 在这个“组”中,结果不应该为零,否则它会迅速崩溃。 所以我们应该检查 nil case 喜欢

var groupBlock : ALAssetsLibraryGroupsEnumerationResultsBlock = {

    (group: ALAssetsGroup!, stop: UnsafePointer<ObjCBool>) in
    println("is goin")
    if group != nil
    {
        count++
         var assetBlock : ALAssetsGroupEnumerationResultsBlock = {
            (result: ALAsset!, index: Int, stop: UnsafePointer<ObjCBool>) in
            if result != nil
            {
             imageArray.append(result.thumbnail().takeRetainedValue())
             assetsArray.append(result)
             countOne++
            }
        }
    }

    group.enumerateAssetsUsingBlock(assetBlock)


}

【讨论】:

    【解决方案2】:

    我遇到了一个问题,即存根代码返回的部分数量为 0,因此我至少在我正在处理的示例中将其更改为 1:https://github.com/thegreatmichael/Albums-iOS8-Swift/blob/master/Albums/IAAlbumsViewController.swift#L66

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多