PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo不返回视频

时间:2014-10-27 23:38:26

标签: ios video ios10 photos ios8.1

已修改从标题中删除了版本,但这是从iOS 8.1开始的

我有一个应用程序,我已经构建了将播放用户Photos.app的视频。当我在8.0.2设备上安装应用程序时,我从[PHAsset fetchAssetsWithMediaType:options:]调用回来的视频列表没有问题,但是当我在8.1设备上安装完全相同的代码时,我得到了0个视频返回。有没有人碰到这个? 8.1是否改变了我们应该再次从Photos.app访问照片/视频的方式?

PHFetchOptions *options = [[PHFetchOptions alloc] init];
PHFetchResult *videos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options];

任何帮助都将不胜感激。

更新

修改我的代码以使用PHAssetCollection调用来尝试获取相册并获得一些成功,现在在两个版本中我获得了6个视频中的3个(不幸的是每次都不是3个)。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchKeyAssetsInAssetCollection:collection[0] options:nil];

编辑#2

好的,我刚刚在上面的代码中看到了我的错误,而且我把它留给了那些做同样愚蠢事情的人。我的视频提取行正在呼唤" Key"资产,这就是为什么我只得到3。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

2 个答案:

答案 0 :(得分:3)

自我回答所以,如果有其他人遇到这个,他们可能会有答案。

所以我仍然不确定为什么我的原始代码在升级到8.1之后不起作用,但是我在Edit#2中的代码通过向另一个方向进行解决来解决问题。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

答案 1 :(得分:0)

显然两者

PHFetchResult *videos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options];

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

在10.1中工作,但仅限于视频位于“照片”应用中。 视频应用中的主页(以及其他类型的)视频 是不可迭代的。

因此,您无法使用较晚的iTunes来将视频投放到设备上,您必须使用AirDrop才能将视频最终投放到照片而不是视频应用中。