首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT ALAssetsLibrary未枚举组

SWIFT ALAssetsLibrary未枚举组
EN

Stack Overflow用户
提问于 2014-08-08 04:26:12
回答 2查看 5.1K关注 0票数 3

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

代码语言:javascript
复制
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”)。知道这是怎么回事吗?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2014-09-11 15:37:48

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-10-29 22:23:10

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25191579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档