我正在尝试通过资产访问AssetCollection。当代码被执行时,Photo Framework返回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-智能相册,其内容会动态更新。
  “照片”应用程序显示内置的智能相册,以对某些类型的相关资产进行分组(请参阅资产集合子类型)。
  
  片刻-在“照片”应用中的片刻。
  “照片”应用程序会自动创建时刻,以按时间和位置对资产进行分组。


这意味着“相册”下的“相机胶卷”不是相册,而是片刻?我真的很困惑

最佳答案

相机胶卷没有收藏类型PHAssetCollectionType.Album

请尝试使用收集类型
子类型为PHAssetCollectionType.SmartAlbumPHAssetCollectionSubtype.SmartAlbumUserLibrary

关于swift - 如果类型设置为相册,则PHAssetCollection fetchAssetCollectionsContainingAsset返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32357300/

10-15 12:38