2017-03-17 8 views
0

사람이 어떤 조언이가끔 PHAsset fetchAssetsWithLocalIdentifiers : 옵션 방법은 빈은

코드를 다음과 같이 이해할 수있을 것이다이 문제가 발생한 결과를 가져 반환 : 때로는 resultAsset는 빈 어쩌면

occassionly iOS9.3에 hanpped입니다
- (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 hanpped on iOS9.3 occasionly 
if (!resultAsset) { 
    NSLog(@"can't retrieve PHAsset from localIdentifier:%@",localIdentifier); 
} 
return resultAsset; 

은}

답변

1

이 문제는 finnaly 내가 그것을 해결하기 위해이 해결 방법을 가지고, "내 사진 스트림 '에서 사진을 선택할 때, hanppened 당신 .`- (PHAsset *)는 workAroundWhenAssetNotFound 도움이되기를 바랍니다 : (NSST를 링 *) 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

+0

위대한 작품! 감사 –