Как найти название альбома для каждого изображения с помощью ALAssetsLibrary

Я использую класс AlAssetLibrary для получения информации об изображениях внутри моего iPad. Как видите, я нашел ширину актива в пикселях. Теперь мне нужно найти название альбома для каждого актива. Поэтому, если все активы находятся в альбоме «камера», мне нужно найти его для каждого актива. Как я могу продолжить? Вот мой код. Обратите внимание на NSString assetsAlbumName. Он возвращает мне ошибку.

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        if (group) {

            [group setAssetsFilter:[ALAssetsFilter allPhotos]]; //search for the photos
            [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){
                if (asset){
                    NSNumber *width = [[[asset defaultRepresentation] metadata] objectForKey:@"PixelWidth"]; //find the key with "PixelWidth" name
                    NSString *widthString = [NSString stringWithFormat:@"%@", width]; //take the value of the key

                    NSString *assetAlbumName = [asset valueForProperty:ALAssetsGroupPropertyName]; //it return to me an ALErrorInvalidProperty
                }
            }
        }
}

Спасибо


person Hieicker    schedule 30.10.2013    source источник


Ответы (2)


ты можешь попробовать

 NSString *albumName = [group valueForProperty:ALAssetsGroupPropertyName];

ты делаешь

 NSString *albumName = [assets valueForProperty:ALAssetsGroupPropertyName];
person Rajpal Thakur    schedule 30.10.2013

*// emumerate through our groups and only add groups that contain photos*
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {

    ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos];
    [group setAssetsFilter:onlyPhotosFilter];
    if ([group numberOfAssets] > 0)
    {
        [self.groups addObject:group]; //groups is NSMutableArray
    }
    else
    {
        [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
    }
};

// enumerate only photos
NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces | ALAssetsGroupSavedPhotos;
[self.assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];


 ALAssetsGroup *groupAsset = groups[objectIndex];
NSString *albumName = [groupAsset valueForProperty:ALAssetsGroupPropertyName];

Вот пример кода Apple, он поможет вам больше.

https://developer.apple.com/library/ios/samplecode/MyImagePicker/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010135

person Aditya Deshmane    schedule 30.10.2013