有时 PHAsset fetchAssetsWithLocalIdentifiers:options 方法返回一个空的提取结果
Posted
技术标签:
【中文标题】有时 PHAsset fetchAssetsWithLocalIdentifiers:options 方法返回一个空的提取结果【英文标题】:Sometimes PHAsset fetchAssetsWithLocalIdentifiers:options method return a empty fetch result 【发布时间】:2017-03-17 02:37:33 【问题描述】:有人遇到过这个问题吗?任何建议将不胜感激。
代码如下: 有时 resultAsset 是空的。在ios9.3上可能偶尔会发生。
- (PHAsset*)retrievePHAssetFromLocalIdentifier:(NSString*)localIdentifier
if (!localIdentifier)
return nil;
NSArray *localIdentifiers = @[localIdentifier];
PHFetchResult *result = [PHAsset fetchAssetsWithLocalIdentifiers:localIdentifiers options:nil];
PHAsset *resultAsset = [result firstObject]; //Sometimes the resultAsset is empty. Maybe happened on iOS9.3 occasionally.
if (!resultAsset)
NSLog(@"can't retrieve PHAsset from localIdentifier:%@",localIdentifier);
return resultAsset;
【问题讨论】:
【参考方案1】:从“我的照片流”中选择照片时会出现此问题。最后,我得到了这个解决方法来解决它。希望对你有帮助。
-(PHAsset*)workAroundWhenAssetNotFound:(NSString*)localIdentifier
__block PHAsset *result = nil;
PHFetchOptions *userAlbumsOptions = [PHFetchOptions new];
userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"];
PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumMyPhotoStream options:userAlbumsOptions];
if(!userAlbums || [userAlbums count] <= 0)
return nil;
[userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx1, BOOL *stop)
PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.predicate = [NSPredicate predicateWithFormat:@"self.localIdentifier CONTAINS %@",localIdentifier];
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:collection options:fetchOptions];
[assetsFetchResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop1)
if(asset)
result = asset;
*stop1 = YES;
*stop = YES;
];
];
return result;
参考链接:How to get photo from My Photo Stream Album
【讨论】:
效果很好!!谢谢 我的 userAlbums 将为零以上是关于有时 PHAsset fetchAssetsWithLocalIdentifiers:options 方法返回一个空的提取结果的主要内容,如果未能解决你的问题,请参考以下文章
PHAsset,如何在应用重启后检索特定的 PHAsset 对象(ios8 Photos)
如何在 iOS 中通过 UIActivityViewController 导出 PHAsset 视频
如何从 PHAsset 获取图像 URL?是不是可以使用 PHAsset URL 将图像保存到文档目录?