4

设置:

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 照片,所有照片都在设备上。

4

2 回答 2

0

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

例子 : -

loadDataRepresentation(forTypeIdentifier:“public.image”)

于 2021-04-12T05:40:56.420 回答
0

如果您在模拟器中遇到此错误,这似乎是一个操作系统错误,因为Device > Erase All Content and Settings..重置模拟器为我解决了这个问题。

于 2021-12-28T16:15:27.043 回答