如果type设置为Album,则PHAssetCollection fetchAssetCollectionsContainingAsset返回nil

时间:2015-09-02 15:31:47

标签: swift phasset

我试图访问AssetCollection Via Asset。当代码被执行时,照片框架返回nil。仅供参考:资产是用iPhone相机点击的图片,因此,它存储在相机胶卷下。

  

77AF0C78-242A-4979-8A7B-7CFF04014C54 / L0 / 001致命错误:在解开可选值时意外发现nil

func assetCollectionForAsset(asset: PHAsset) -> PHCollection {
    var assetCollection: PHAssetCollection!

    print(asset.localIdentifier)

    let fetchOptions = PHFetchOptions()
    let collection = PHAssetCollection.fetchAssetCollectionsContainingAsset(asset, withType: PHAssetCollectionType.Album, options: fetchOptions)

    //let collection = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([asset.localIdentifier], options: fetchOptions)

    assetCollection = collection.firstObject as! PHAssetCollection

    return assetCollection
}    

如果我将类型更改为Moment,问题就会消失。

       let collection: PHFetchResult = PHAssetCollection.fetchAssetCollectionsContainingAsset(asset, withType: PHAssetCollectionType.Moment, options: fetchOptions)
  

Apple文档中的常量信息表示:

     

专辑 - 照片应用中的专辑。   相册可以在照片应用中创建,也可以通过iTunes同步显示在iOS设备上。

     

SmartAlbum - 智能相册,其内容动态更新。   Photos应用程序显示内置智能相册,以对某些类型的相关资产进行分组(请参阅资产收集子类型)。

     

时刻 - 照片应用中的片刻。   “照片”应用会自动创建按时间和地点对资源进行分组的时刻。

这意味着专辑中的相机胶卷不是专辑而是片刻?我真的很困惑。

1 个答案:

答案 0 :(得分:1)

相机胶卷没有集合类型PHAssetCollectionType.Album

请尝试使用收藏类型 具有子类型PHAssetCollectionType.SmartAlbum

PHAssetCollectionSubtype.SmartAlbumUserLibrary