2015-03-26 4 views
3

Следующий код указывает на проблему в 3 простых шага:PhotoKit: fetchAssetCollectionsWithLocalIdentifiers терпит неудачу

1) выборки моменты

момент 2) кэш localIdentifier

3) выборки момент с идентификатором: сбой (на устройстве , iOS 8.2)

- (void)momentLocalIdTest 
{ 
    PHFetchResult  * fetchResult; 
    PHAssetCollection * moment; 
    NSString   * localIdentifier; 

    fetchResult = [ PHAssetCollection fetchMomentsWithOptions: nil ]; 

    if(fetchResult.count == 0) 
     return; 

    moment   = fetchResult.firstObject; 
    localIdentifier = moment.localIdentifier; 
    fetchResult  = [ PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers: @[ localIdentifier ] options: nil ]; 

    if(fetchResult.count == 0) 
     NSLog(@"AssetCollection with localIdentifier %@ not found!!!", localIdentifier); 
} 

Я что-то недопонимаю? Это кажется довольно простым ...

Любая помощь оценена!

+0

Поданный отчет об ошибке 20307335. отчет – Gregzo

+0

ошибка является дубликатом известной проблемы. – Gregzo

ответ

0

Я столкнулся с той же проблемой, и не мог понять, что не так с этим кодом. Я думаю, что этот API просто прост и просто сломан (по крайней мере, от 8.0 до 8.4)

Вот обходной код; Вы в основном должны возрождаться экземпляр PHAssetCollection от идентификатора

PHFetchOptions *options = [PHFetchOptions new]; 
options.predicate = [NSPredicate predicateWithFormat:@"localIdentifier = %@", identifier]; 

PHAssetCollection *collection = [[PHAssetCollection fetchMomentsWithOptions:options] firstObject]; 
PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:collection options:nil]; 
Смежные вопросы