从fetchAssetsWithALAssetURLs返回的PHAsset:使用UIImagePickerController从"我的照片流"专辑中选择照片时总是为零

use*_*977 9 uiimagepickercontroller alassetslibrary ios8 photosframework phasset

我使用的UIImagePickerController是让用户选择要在应用中分享的照片或视频.当用户在其库中选择媒体项时,我在其中一个UIImagePickerController's委托方法中执行此代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

PHAsset *asset;
if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) {
    // Video
    asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];

} else if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) {
    // Photo
    PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil];
    asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];  
   }
}
Run Code Online (Sandbox Code Playgroud)

两者都if statements适用于照片和视频,除非您从标题相册中选择一个项目"My Photo Stream".

从中选择项目时"My Photo Stream",PHAsset始终返回nil.

我发现以下问题似乎有一个可行的解决方案的答案:ALAssetsLibrary assetForURL:在iOS 8.1中"我的照片流"中的照片总是返回nil

但上面的链接使用了AssetsLibraryApple不再推荐的框架:

"在iOS 8.0及更高版本中,使用Photos框架而不是Assets Library框架.Photos框架为使用用户的照片库提供了更多功能和更好的性能.请参阅照片框架参考."

我需要能够返回相册中PHAsset媒体项目的对象"My Photo Stream".现在这年代由返回的引用URL UIImagePickerControllerinfo字典是在控制台登录一个有效的URL,但使用此网址时,一个有效的PHAsset永远不会返回的对象.

以下是didFinishPickingMediaWithInfo:委托方法的信息字典中返回的引用URL的示例:

assets-library://asset/asset.JPG?id=DCF5C6E5-B4F4-4E61-9C4B-CC63E104BF2B&ext=JPG
Run Code Online (Sandbox Code Playgroud)

hol*_*ann 1

这是一个错误,似乎已在最新的 iOS 8.2x 测试版中得到修复。

  • 9.3 上有同样的问题:/ (3认同)