首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PHAsset追加到PHAsset数组

将PHAsset追加到PHAsset数组
EN

Stack Overflow用户
提问于 2017-08-31 14:07:52
回答 1查看 2.9K关注 0票数 2

我正在尝试获取相册中的所有照片(PHAssets),并将它们添加到一个数组中,这样我就可以将其作为完成参数进行传递。

代码在包含arrayOfPHAsset.append(asset)的行处崩溃。为什么?我需要在代码中进行哪些更改才能使其正常工作?

这是我正在使用的代码。

代码语言:javascript
复制
func fetchCustomAlbumPhotos( completion : (_ array : [PHAsset]) -> Void)
    {
        var assetCollection = PHAssetCollection()
        var albumFound = Bool()
        var photoAssets = PHFetchResult<AnyObject>()
        var arrayOfPHAsset : [PHAsset]!
        let fetchOptions = PHFetchOptions()
        fetchOptions.predicate = NSPredicate(format: "title = %@", CustomAlbum.albumName)
        let collection:PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

        if let _:AnyObject = collection.firstObject{
            //found the album
            assetCollection = collection.firstObject!
            albumFound = true
        }else {
            albumFound = false
        completion([])
        }
        _ = collection.count
        photoAssets = PHAsset.fetchAssets(in: assetCollection, options: nil) as! PHFetchResult<AnyObject>
        let imageManager = PHCachingImageManager()

        //        let imageManager = PHImageManager.defaultManager()

        photoAssets.enumerateObjects({(object: AnyObject!,
            count: Int,
            stop: UnsafeMutablePointer<ObjCBool>) in

            if object is PHAsset{
                let asset = object as! PHAsset
                print(asset)
                arrayOfPHAsset.append(asset)
//                print("Inside  If object is PHAsset, This is number 1")
//                
//                let imageSize = CGSize(width: asset.pixelWidth,
//                                       height: asset.pixelHeight)
//                
//                /* For faster performance, and maybe degraded image */
//                let options = PHImageRequestOptions()
//                options.deliveryMode = .fastFormat
//                options.isSynchronous = true
//                
//                imageManager.requestImage(for: asset,
//                                                  targetSize: imageSize,
//                                                  contentMode: .aspectFill,
//                                                  options: options,
//                                                  resultHandler: {
//                                                    (image, info) -> Void in
////                                                    self.photo = image!
////                                                    /* The image is now available to us */
////                                                    self.addImgToArray(uploadImage: self.photo)
//                                                    print("enum for image, This is number 2")
//                                                    
//                })

            }
        })
        print("arrayOfPHAsset : \(arrayOfPHAsset), arrayOfPHAsset count : \(arrayOfPHAsset.count)")
        completion(arrayOfPHAsset)
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 14:11:09

您所显示的代码中的以下行并没有分配数组;它只是声明了数组。

代码语言:javascript
复制
var arrayOfPHAsset : [PHAsset]!

您还需要分配数组。

代码语言:javascript
复制
var arrayOfPHAsset : [PHAsset] = []

然后,您可以向数组中添加项。

代码语言:javascript
复制
arrayOfPHAsset.append(asset)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45974363

复制
相关文章

相似问题

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