Я пытаюсь прочитать библиотеку Fotos с каркасом MediaLibrary с внешнего диска ("/Seagate
").
Что бы я ни пробовал, я получаю данные только из библиотеки по умолчанию, которая находится в разделе «Изображения»
Чтение внешней библиотеки с приложением Fotos проходит отлично. (Я изменил путь в фотографии)
В моем приложении я попробовал несколько вариантов:
подключение к MediaLibrary
с использованием словаря опций для
включить мое внешнее устройство с помощью MLMediaLoadFoldersKey (см. код ниже). безуспешно
чтение 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, но я всегда получаю библиотеку по умолчанию.
Нет сообщения об ошибке, которое могло бы дать мне подсказку.