iOS 14 NSItemProvider loadDataRepresentation() 返回指定类型的 nil 数据

jbj*_*nny 5 ios ios14 phpickerviewcontroller phpicker

设置:

\n

我用来PHPickerViewController允许用户选择照片。我已经实现了PHPickerViewControllerDelegate协议方法picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult])itemProvider我从结果数组中获取。

\n

问题:

\n

我需要访问所选图像的数据。NSItemProviderCalled上有一个方法loadDataRepresentation(),它接受类型标识符字符串,并应在其完成块中返回图像数据。

\n

当我调用这个方法时,有时它会返回数据,有时则不会。我已经对每个提供程序的多个注册类型标识符进行了尝试,并且看到了同样的情况。有时它会返回 JPEG 数据,但不返回 HEIF,有时仅返回 HEIF,有时根本不返回任何数据。这是一致的,因为每次我尝试加载其数据时,同一张照片都会显示相同的结果。

\n

当没有数据时,我看到以下错误:

\n
Upload preparation for claim D8C281B7-CCCE-4299-95BF-9355FCF340E4 completed with error: Error Domain=NSCocoaErrorDomain Code=260 "The file \xe2\x80\x9c7AB1AB3F-7643-45C1-9DD9-5F5642965C3A.jpeg\xe2\x80\x9d couldn\xe2\x80\x99t be opened because there is no such file."\n
Run Code Online (Sandbox Code Playgroud)\n

在尝试加载照片数据之前,我需要对照片执行某些操作吗?也许我在这里错过了一步?我直接用 iPhone XR 拍摄的照片会出现这种情况。我没有使用 iCloud 照片,所有照片都在设备上。

\n

小智 1

“public.image”这个标识符似乎能够获取所有类型的照片。

例子 : -

loadDataRepresentation(forTypeIdentifier:“public.image”)