0

我正在尝试从使用 PHPickerViewController 获取的图像中读取一些元数据。

var config = PHPickerConfiguration()
self.phPicker = PHPickerViewController(configuration: config)
if let picker = self.phPicker {
    self.phPicker?.delegate = self
    self.present(picker, animated: true) {
        self.phPicker = nil
    }
}

但是访问这些数据的 PHPickerResult.assetIdentifier 总是为零。

extension ChatViewController: PHPickerViewControllerDelegate {
    func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        dismiss(animated: true) {
            if results.isEmpty {
                return
            }
            assert(results.first!.assetIdentifier != nil)  // fails
        }
    }
}
4

1 回答 1

0

诀窍是正确配置 PHPickerViewController。

var config = PHPickerConfiguration()  // WRONG!
let picker = PHPickerViewController(configuration: config)

根据文档,您必须使用 PHPhotoLibrary。

PHPhotoLibrary 提供对用户照片库中照片、视频和相关内容的元数据和图像数据的访问,包括来自相机胶卷、iCloud 共享、照片流、导入和从 iTunes 同步的内容。

因此,只需在构造函数中使用 PHPhotoLibrary 即可,一切正常。

var config = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared())  // CORRECT!
let picker = PHPickerViewController(configuration: config)
于 2022-02-16T10:53:16.590 回答