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