Как получить все PHAssets из библиотеки фотографий MacOS

Я хочу проанализировать все изображения из моей библиотеки фотографий MacOS, используя PHAsset. Однако все примеры, которые я нахожу, работают только для iOS, как показано ниже, где последняя строка, которая извлекает ресурсы, недоступна в среде macos:

    NSMutableArray *photos = [[NSMutableArray alloc] init];
    PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
    allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

 // Below compilation error as fetchAssetsWithMediaType is only on iOS framework
    PHFetchResult *allPhotos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];

Какую команду fetchAssets я должен использовать в MacOS (версия 10.13), или есть другой способ сделать это?

1 ответ

Решение

Каркас Photoshop - или, по крайней мере, основное подмножество этого каркаса, которое предоставляет приложениям доступ на чтение / запись ко всей библиотеке Photos - недоступен в macOS.

Photos и PhotosUI присутствуют в macOS, но только для поддержки определенных функций расширения приложения:

  • Расширение редактирования фотографий. Пользователь вызывает их из приложения "Фотографии", находясь в режиме "Правка" для одного ресурса, и он обеспечивает прямой доступ к данным фото / видео для этого ресурса, поэтому он даже не использует PHAsset учебный класс.
  • Расширение Фотопроекта. Они включают в себя сбор активов и выборочную загрузку данных для каждого, поэтому больше PHAsset / PHImageManager Система присутствует. Тем не менее, это все еще сокращенное подмножество по сравнению с iOS (только то, что необходимо для расширения проекта, например, выборка ресурсов в этом проекте), и оно доступно только для расширений приложений, а не для отдельных приложений.

Если вам нужна полная платформа Photoshop для MacOS, лучше всего подать запрос на добавление функции в Apple.

Начиная с macOS 10.15 Catalina, фреймворки Photos и PhotosUI теперь доступны на Mac для приложений Catalyst и AppKit. Таким образом, вы должны иметь возможность перенести почти весь код iOS, который использует PhotoKit, в приложение Mac, если он имеет минимальное системное требование 10.15.

Другие вопросы по тегам