Не удается прочитать внешнюю библиотеку фотографий с помощью среды MediaLibrary - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь прочитать библиотеку Fotos с каркасом MediaLibrary с внешнего диска ("/Seagate"). Что бы я ни пробовал, я получаю данные только из библиотеки по умолчанию, которая находится в разделе «Изображения»

Чтение внешней библиотеки с приложением Fotos проходит отлично. (Я изменил путь в фотографии) В моем приложении я попробовал несколько вариантов:

  1. подключение к MediaLibrary с использованием словаря опций для включить мое внешнее устройство с помощью MLMediaLoadFoldersKey (см. код ниже). безуспешно

  2. чтение mediaGroups с разными идентификаторами. безуспешно

Интересно, почему я не могу получить 2 mediaSources, хотя я определил папки по умолчанию и мою внешнюю

аспект ленивой загрузки данных из библиотеки должен хорошо управляться, так как я установил наблюдателей для всех шагов: library -> sources -> groups -> objects

К точке 1:

 NSDictionary *options = @{
                              MLMediaLoadSourceTypesKey: @(MLMediaSourceTypeImage),
                              MLMediaLoadIncludeSourcesKey: @[MLMediaSourcePhotosIdentifier,MLMediaSourceiPhotoIdentifier],
                              MLMediaLoadFoldersKey:@[MLMediaLoadFoldersKey,@"//Seagate/Fotos Library"]

    if ( mediaLibrary == Nil) {
        MLMediaLibrary *MmediaLibrary = [[MLMediaLibrary alloc] initWithOptions:options];
        mediaLibrary = MmediaLibrary;
    }

    [mediaLibrary addObserver:self
                   forKeyPath:@"mediaSources"
                      options:0
                      context:(__bridge void *)@"mediaLibraryLoaded"];

    [mediaLibrary mediaSources];

К точке 2:

//...
    else if (context == (__bridge void *)@"rootMediaGroupLoaded")
    {
        MLMediaGroup *sharedAlbums   = [mediaSource mediaGroupForIdentifier:@"TopLevelAlbums"];
        MLMediaGroup *topLevelAlbums = [mediaSource mediaGroupForIdentifier:@"Albums"];
        MLMediaGroup *allFotosAlbums = [mediaSource mediaGroupForIdentifier:@"Fotos"];
        MLMediaGroup *iPhotoAlbums   = [mediaSource mediaGroupForIdentifier:@"iPhotos"];
        NSArray *albumList = [sharedAlbums.childGroups arrayByAddingObjectsFromArray:topLevelAlbums.childGroups];
        albumList = [albumList arrayByAddingObjectsFromArray:allFotosAlbums.childGroups];
        albumList = [albumList arrayByAddingObjectsFromArray:iPhotoAlbums.childGroups];
        //albumList = [albumList arrayByAddingObjectsFromArray:@[topLevelAlbums]];

        {

            [self addObserver:self
                   forKeyPath:@"nextAlbumIndex"
                      options:0
                      context:@"nextAlbumIndex"]; // manages the loop over all albums

#pragma mark query all photos of one Album
            //
            MLMediaGroup *Nalbum = [[AlbumList objectAtIndex:nextAlbumIndex] group];
            [Nalbum addObserver:self
                     forKeyPath:@"mediaObjects"
                        options:0
                        context:@"mediaObjects"];

            [Nalbum mediaObjects];  // query the list and store result in Malbum
        }}
}

Я ожидаю получить внешнюю библиотеку Fotos, но я всегда получаю библиотеку по умолчанию. Нет сообщения об ошибке, которое могло бы дать мне подсказку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...