Итерации через библиотеку фотографий на OS X?
Я пытаюсь выполнить итерацию через пользовательскую библиотеку фотографий в OS X. На iOS я использовал бы фреймворк Photos, но, по-видимому, который недоступен в OS X, и мы должны использовать среду Media Library. Однако, хотя мне удалось использовать код, связанный выше, чтобы получить доступ к объекту MLMediaSource
, мне сложно определить, как выполнять итерацию с помощью фотоархивов.
Документация библиотеки мультимедиа ссылается на метод mediaObjectForIdentifier:
, который звучит многообещающе, но не указывает, какие идентификаторы должен быть использован. Я довольно опытен с iOS, но полный n00b на OS X, поэтому я чувствую себя немного потерянным.
Если бы я просто хотел выполнить итерацию через пользовательскую библиотеку, NSLog'ing каждой фотографии, как я могу это сделать? Либо использовать среду библиотеки мультимедиа, либо другую структуру, если она работает для текущей библиотеки фотографий?
С этой картой нетрудно работать, но это утомительно, потому что она асинхронно /lazy загружает свойства, и KVO является единственным, кто хочет получить уведомление об завершении async.
Если вы хотите итерировать фотографии, вам не нужно заранее знать идентификаторы.
Создайте медиа-библиотеку:
self.library = [[MLMediaLibrary alloc] initWithOptions:options];
Добавить наблюдателя KVO для mediaSources
. Получите доступ к медиа-ресурсам, если не ноль, переходите к следующему шагу, в противном случае переходите к следующему шагу, когда срабатывает ваш наблюдатель KVO.
На следующем шаге, итерация источников, добавление наблюдателя KVO на rootMediaGroup
и доступ rootMediaGroup
к каждому источнику. Если он не равен нулю, вызовите ваш итератор сейчас, иначе вызовите его из обработчика уведомлений KVO.
Для каждой rootMediaGroup следуйте той же стратегии, что и выше, но для mediaObjects
. Объекты мультимедиа - это то, что вы в конечном итоге после.
Еще в рубрике
- Вопросы
- Photosframework
- Итерации через библиотеку фотографий на OS X?