ALAssetsGroup numberOfAssets возвращает 0 с библиотекой фотографий на iPhone, которая была обновлена ​​​​с помощью фотографий

У меня есть приложение, которое отображает список фотоальбомов для пользователя, чтобы они могли выбирать фотографии внутри них и загружать их на сервер. Это все хорошо и надежно, но один человек, который обновил свою библиотеку Mac и iPhoto до Photos, сообщил, что, когда они теперь используют приложение, некоторые из их фотоальбомов на их iPhone и iPad говорят «0 фотографий», когда эти альбомы работали до обновления. .

Я просто перечисляю группу ресурсов (попутно проверяя ошибки) и создаю UITableViewCell с заголовком и количеством фотографий с миниатюрой. Это работает уже четыре года, и я только что обновил код до Swift. До обновления Photos не было сообщений о проблемах со старым кодом Obj C или новым кодом Swift. В примечаниях к выпуску я не нашел ничего, относящегося к этой проблеме.

Если вы посмотрите на обновленную библиотеку фотографий в приложении «Фотографии» на iPhone, альбомы теперь находятся в папке «Альбомы iPhoto». Это те, у кого случайные проблемы.

Код ниже извлекает группу из готового массива, устанавливает фильтр только на фотографии и получает количество фотографий.

Код для извлечения эскиза и заголовка не указан, поскольку он всегда работает и не имеет отношения к проблеме.

Кроме того, это всегда происходит с одними и теми же альбомами. В документации Apple ничего не говорится о numberOfAssets(), кроме того, что он основан на фильтрах. Фильтр действителен, и проверено, что затрагиваемые альбомы содержат изображения и не содержат видео.

Любые идеи о том, почему это происходит, будут высоко оценены.

    let assetGroup = assetsGroup[indexPath.row] as! ALAssetsGroup
    assetGroup.setAssetsFilter(ALAssetsFilter.allPhotos())
    let photoCount = assetGroup.numberOfAssets()

person Michael Gaines    schedule 18.05.2015    source источник
comment
Как изменение на Mac повлияет на то, что происходит на телефоне?   -  person matt    schedule 19.05.2015
comment
Потому что приложение «Фото» на Mac меняет макет ваших альбомов и синхронизирует ваш iPad/iPhone.   -  person Michael Gaines    schedule 19.05.2015
comment
Верно, но я хочу сказать, что им пришлось бы что-то изменить в телефоне, чтобы это имело значение, как я пытался предложить в своем ответе.   -  person matt    schedule 19.05.2015


Ответы (1)


Я предполагаю, и это всего лишь предположение, что ваш код на основе ALAsset мертв.

Фреймворк Assets Library был заменен на Photo Kit — и на то есть причина. Весь смысл Photo Kit заключается в том, чтобы подготовить вас к совершенно другой реальности, где фотографии хранятся в облаке, а приложение «Фотографии» на телефоне и приложение «Фотографии» на Mac по-новому взаимодействуют через облако. Вы должны были начать заниматься этим еще в июне 2014 года, когда вышел Photo Kit; теперь приложение «Фотографии» на Mac стало реальностью, и эта реальность поразила ваше приложение.

Таким образом, я бы предположил, что вы, вероятно, ничего не добьетесь в решении этой проблемы, пока не замените весь свой подход библиотеки активов к работе с библиотекой фотографий на подход, основанный на Photo Kit. Конечно, я могу ошибаться, но мой лучший совет, по крайней мере, состоит в том, чтобы переписать ваше приложение с помощью Photo Kit и посмотреть, действительно ли это поможет.

person matt    schedule 19.05.2015
comment
Материал ALAsset был представлен только в iOS4, а затем заменен в iOS8, чтобы быть устаревшим в iOS9. Возможно, вы правы в том, что переход на PhotoKit решит его проблемы, но я не согласен обвинять разработчика, которого вы должны были начать... тон. Ожидание, что ОС будет поддерживать API более четырех лет, и ожидание того, что она не сломает существующий код всего через год после введения совершенно новой инфраструктуры, похоже на то, чего вы должны ожидать как разработчик. - person Pieter; 07.12.2015