为啥 PHAsset fetchAssetsWithOptions 不返回所有资产?

Posted

技术标签:

【中文标题】为啥 PHAsset fetchAssetsWithOptions 不返回所有资产?【英文标题】:Why PHAsset fetchAssetsWithOptions doesn't return all assets?为什么 PHAsset fetchAssetsWithOptions 不返回所有资产? 【发布时间】:2015-04-14 15:41:33 【问题描述】:

我的照片流中有 75 张照片,相机胶卷中有 1 张照片(不在我的照片流中)。所以我总共有 76 张照片。但后续代码仅返回 51 张照片:

    PHFetchOptions *options = [[PHFetchOptions alloc] init];
    options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
    assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];

我知道:

如果在 ios 8.1 或之后链接的应用调用此方法,则 结果不包括从 iTunes 同步到设备的照片 或存储在 iCloud 共享照片流中的照片。

但以上照片都不是来自 iCloud 共享照片流。

【问题讨论】:

试试这个 - [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:options]; 你尝试过朋友圈收藏吗? @UttamSinha 不,我不想要时刻。 【参考方案1】:

不是最漂亮的,但尝试以下获取所有资产:

  NSMutableArray *_assets = [NSMutableArray new];

  PHFetchResult *fr = [PHAssetCollection fetchMomentsWithOptions:nil];
  for (PHAssetCollection *collection in fr) 

     PHFetchResult *_fr = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
     for (PHAsset *asset in _fr) 

        [_assets addObject:asset];
     
  

【讨论】:

以上是关于为啥 PHAsset fetchAssetsWithOptions 不返回所有资产?的主要内容,如果未能解决你的问题,请参考以下文章

PHAsset:啥是“assetSource”?

PHAsset,如何在应用重启后检索特定的 PHAsset 对象(ios8 Photos)

如何在 iOS 中通过 UIActivityViewController 导出 PHAsset 视频

如何从 PHAsset 获取图像 URL?是不是可以使用 PHAsset URL 将图像保存到文档目录?

无法将类型“[PHAsset]”的值分配给类型“UIImageView!”

如何从 PHAsset 获取视频的缩略图?