iOS 14 NSItemProvider loadDataRepresentation() возвращает нулевые данные для указанных типов

Настроить:

Я использую PHPickerViewControllerчтобы позволить пользователю выбирать фотографии. Я реализовалPHPickerViewControllerDelegate протокол метод picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]). Я получаюitemProvider из массива результатов.

Проблема:

Мне нужно получить доступ к данным для выбранного изображения. Есть метод наNSItemProvider называется loadDataRepresentation(), который принимает строку идентификатора типа и должен возвращать данные изображения в своем блоке завершения.

Когда я вызываю этот метод, иногда он возвращает данные, иногда - нет. Я пробовал это для нескольких идентификаторов зарегистрированных типов для каждого провайдера и вижу то же самое. Иногда он возвращает данные JPEG, но не HEIF, иногда только HEIF, а иногда он вообще не возвращает никаких данных. Это согласуется с тем, что одна и та же фотография показывает один и тот же результат каждый раз, когда я пытаюсь загрузить ее данные.

Когда данных нет, я вижу следующую ошибку:

Upload preparation for claim D8C281B7-CCCE-4299-95BF-9355FCF340E4 completed with error: Error Domain=NSCocoaErrorDomain Code=260 "The file “7AB1AB3F-7643-45C1-9DD9-5F5642965C3A.jpeg” couldn’t be opened because there is no such file."

Что мне нужно сделать с фотографией, прежде чем пытаться загрузить ее данные? Может мне здесь не хватает шага? Это происходит с фотографиями, которые я сделал непосредственно на свой iPhone XR. Я не использую iCloud Photos, все фотографии есть на устройстве.

2 ответа

"public.image" этот идентификатор, кажется, может получать все типы фотографий.

пример : -

loadDataRepresentation(forTypeIdentifier: "public.image")

Если вы получаете эту ошибку в симуляторе, похоже, что это может быть ошибка ОС, потому что выполнение Device > Erase All Content and Settings..для сброса симулятора это исправлено для меня.

Другие вопросы по тегам