2014-11-21 2 views
1

Я пытаюсь получить все, чтобы получить все фотографии, за исключением фотографий в моем собственном альбоме. Я пытаюсь получить все фотографии, используя метод в этом ответе. ios - Simple example to get list of photo albums? , но я не могу найти способ фильтровать свой собственный альбом.iOS 8 Фото рамки: Получить конкретный список альбомов

Я использую код, как показано ниже ... Я могу получить альбомы, кроме моего собственного, но как я могу получить PHFetchResult со всеми фотографиями, кроме моих фотографий в моем собственном альбоме?

спасибо.

PHFetchOptions *albumsFetchOption = [[PHFetchOptions alloc]init]; 
NSString *string = @"MyCam"; 
albumsFetchOption.predicate = [NSPredicate predicateWithFormat:@"title != %@",string]; 

PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:albumsFetchOption]; 

ответ

2

В конце концов, я использую NSArray вместо PHFetchResult ...

// извлечение всех

PHFetchOptions *allPhotosfetchOption = [[PHFetchOptions alloc]init]; 
allPhotosfetchOption.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; 
allPhotosfetchOption.predicate = [NSPredicate predicateWithFormat:@"mediaType == 1"]; 

__block NSMutableArray *allAssetArray = [NSMutableArray new]; 
PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosfetchOption]; 
[result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) { 
     [allAssetArray addObject:asset]; 
}]; 

//MyCam Album 
NSString *string = @"MyCam"; 
PHFetchOptions *albumFetchOption = [[PHFetchOptions alloc]init]; 
albumFetchOption.predicate = [NSPredicate predicateWithFormat:@"title == %@",string]; 
PHFetchResult *albumResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:albumFetchOption]; 

[albumResult enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) { 
    PHFetchResult *loftAssetResult = [PHAsset fetchAssetsInAssetCollection:collection options:nil]; 
    [loftAssetResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) { 
       if ([allAssetArray containsObject:asset]) { 
        [allAssetArray removeObject:asset]; 
       } 
    }]; 
}]; 
Смежные вопросы