Итерации через библиотеку фотографий на OS X?

85
8

Я пытаюсь выполнить итерацию через пользовательскую библиотеку фотографий в OS X. На iOS я использовал бы фреймворк Photos, но, по-видимому, который недоступен в OS X, и мы должны использовать среду Media Library. Однако, хотя мне удалось использовать код, связанный выше, чтобы получить доступ к объекту MLMediaSource, мне сложно определить, как выполнять итерацию с помощью фотоархивов.


Документация библиотеки мультимедиа ссылается на метод mediaObjectForIdentifier:, который звучит многообещающе, но не указывает, какие идентификаторы должен быть использован. Я довольно опытен с iOS, но полный n00b на OS X, поэтому я чувствую себя немного потерянным.


Если бы я просто хотел выполнить итерацию через пользовательскую библиотеку, NSLog'ing каждой фотографии, как я могу это сделать? Либо использовать среду библиотеки мультимедиа, либо другую структуру, если она работает для текущей библиотеки фотографий?

спросил(а) 2016-01-17T09:36:00+03:00 5 лет, 1 месяц назад
1
Решение
86

С этой картой нетрудно работать, но это утомительно, потому что она асинхронно /lazy загружает свойства, и KVO является единственным, кто хочет получить уведомление об завершении async.


Если вы хотите итерировать фотографии, вам не нужно заранее знать идентификаторы.


Создайте медиа-библиотеку:


self.library = [[MLMediaLibrary alloc] initWithOptions:options];

Добавить наблюдателя KVO для mediaSources. Получите доступ к медиа-ресурсам, если не ноль, переходите к следующему шагу, в противном случае переходите к следующему шагу, когда срабатывает ваш наблюдатель KVO.


На следующем шаге, итерация источников, добавление наблюдателя KVO на rootMediaGroup и доступ rootMediaGroup к каждому источнику. Если он не равен нулю, вызовите ваш итератор сейчас, иначе вызовите его из обработчика уведомлений KVO.


Для каждой rootMediaGroup следуйте той же стратегии, что и выше, но для mediaObjects. Объекты мультимедиа - это то, что вы в конечном итоге после.

ответил(а) 2016-01-22T06:29:00+03:00 5 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема