2016-05-14 4 views
2

Я работаю над расширением Photos для Mac OS X (10.11).Использование неразрешенного идентификатора 'PHPhotoLibrary'

У меня есть фотографии и фотоизображения.

Все в порядке, когда я пытаюсь позвонить в PHPhotoLibrary.sharedPhotoLibrary().

Это приводит к ошибке в Xcode 7.3.1 (7D1014):

Use of unresolved identifier 'PHPhotoLibrary' 

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

+2

Да, этот API не существует на OS X. – jtbandes

+0

Действительно? Хорошо, что бы объяснить проблему. Я хочу сохранить актив и подумал, что необходимо вызвать библиотеку для запроса на изменение. Вам нужно будет больше узнать. Благодаря! – adamteale

ответ

1

Вам не нужно PHPhotoLibrary класса, чтобы сделать расширение для редактирования фотографий в любом прошивкой или OS X, и в OS X вы не использовать его.

Весь рабочий процесс для расширения для редактирования фотографий проходит через протокол PHContentEditingController. На обеих платформах главный контроллер просмотра расширения для редактирования фотографий реализует этот протокол. Он предоставляет объект для редактирования в методе startContentEditingWithInput:placeholderImage:, и когда пользователь будет выполнен, он вызывает ваш метод finishContentEditingWithCompletionHandler:, чтобы вы могли применить свои окончательные изменения и предоставить результат.

Уведомление Я говорю «когда пользователь закончил редактирование». Сохранение в библиотеке фотографий не является чем-то, что вы делаете в своем добавочном коде - вместо этого Photos запрашивает окончательный вывод вывода, а Photos обрабатывает его в библиотеке.

В вашем методе finishContentEditingWithCompletionHandler:, вы должны:

  1. Создать PHContentEditingOutput из PHContentEditingInput (который вы получили в startContentEditingWithInput:placeholderImage:).
  2. Сохранить вывод в виде файла в формате JPEG (или видеофайла QuickTime, для видео активов) в renderedContentURL, что PHContentEditingOutput определяет
  3. Вызвать completionHandler блок, который был передан вам, передавая это ваш PHContentEditingOutput.

Вы называете это обработчиком завершения, что приводит к тому, что фотографии сохраняют отредактированный объект в библиотеке.

+0

Rickster благодарит вас за ответ на мой пост. У меня это точно, но я получаю ошибки при сохранении в renderedContentUrl - Xcode говорит, что файл уже существует. Я думал, что ошибка, возможно, связана с библиотекой PHPhoto, которая должна предоставить разрешение на расширение для сохранения файла. – adamteale

+1

Отсутствие разрешения: пользователь неявно дал разрешение на расширение для записи отредактированного актива, потому что он выбрал расширение для редактирования этого актива. Иногда вам нужно удалить то, что находится в renderedContentURL, прежде чем вы сможете его написать. – rickster

+0

Если я не могу использовать PHPhotoLibrary на macOS, какой другой API существует для доступа к фотографиям на Mac? –