Подтвердить что ты не робот

MPMediaItemPropertyAssetURL возвращает null только для iPhone 5s

Я использовал следующий код, чтобы извлечь URL-адрес ресурса из объекта MPMediaItem, возвращенного из MPMediaItemPickerController, чтобы я мог копировать музыкальные файлы из музыкальной библиотеки iPhone iPhone itunes в папку документов для обработки, но на iPhone 5s я всегда получить нулевое значение из MPMediaItemPropertyAssetURL, но когда я запускаю тот же код на iPhone 4 или iPhone 5, он работает так, как будто он должен возвращать правильный URL-адрес.

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {

    [self dismissViewControllerAnimated:YES completion:nil];

        if(mediaItemCollection){
           MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
           NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
           NSLog(@"songtitle: %@", songTitle);
           NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
           NSLog(@"%@", assetURL);
        }

}

Я попытался удалить arm64 из допустимых архитектур и создать только для armv7 и armv7s, но это не устранило эту проблему.

Кто-нибудь знает, почему это происходит, и как я могу это исправить, или если есть обходной путь, который я могу использовать? Мне нужно иметь возможность копировать музыку из музыкальной библиотеки iPhone в папку документов, чтобы я мог правильно обрабатывать музыку для приложения dj.

Спасибо

4b9b3361

Ответ 1

Я выяснил, что проблема заключалась в том, что песня, которую я пыталась получить для свойства MPMediaItemPropertyAssetURL, на самом деле не была на моем устройстве. Он был указан в медиа-библиотеке, но на самом деле был все еще в iCloud. Как только я загрузил песню на свое устройство, проблема была решена. Насколько мне не нравится отвечать на мой собственный вопрос, я принял совет Джеруэна, чтобы он мог надеяться помочь другим.

Ответ 2

Мы можем добавить фильтр, который не отображает элементы iCloud с помощью

[mediaPicker setShowsCloudItems:NO];