微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHPhotoLibrary - 由presentLimitedLibraryPicker 选择的媒体无法检索为photoLibraryDidChange 中的插入对象

如何解决PHPhotoLibrary - 由presentLimitedLibraryPicker 选择的媒体无法检索为photoLibraryDidChange 中的插入对象

我要求用户PHPhotoLibrary.shared (). PresentLimitedLibraryPicker (from: self)PHAuthorizationStatus 时使用 .limited 重新选择。

我正在尝试在 photoLibraryDidChangePHPhotoLibraryChangeObserver 中获得重新选择的结果。

我希望使用 insertedobjects 检索用户选择的其他媒体,但结果为零。 但是,PHFetchResult 的计数从 11 更改为 13

这是正常行为吗?在这种情况下,有没有办法获取添加(或删除)的媒体?

以下是格式化输出

detail <PHFetchResultChangeDetails: 0x600002e86100> 

// Before: count is 0.
before=<PHFetchResult: 0x600003d984d0> count=0 CID=(null),CFT=2 query=<PHQuery: 0x7fcb8dc104b0> opts=<PHFetchOptions: 0x7fcb8dc12fa0> predicate=(null)/(null)[0],sort=(null)/(null)/0/A,changes[(null)]=1,type=PHAsset,base=(null),// After: count is 3. But inserted is null.
after=<PHFetchResult: 0x600003d90630> count=3 CID=(null),CFT=2 query=<PHQuery: 0x7fcb8de468e0> opts=<PHFetchOptions: 0x7fcb8de15750> predicate=(null)/(null)[0],hasIncremental=0 deleted=(null),inserted=(null),changed=(null),hasMoves=0

下面是我为测试创建的代码

class ViewController: UIViewController {

    var result: PHFetchResult<PHAsset>? = nil

    override func viewDidLoad() {
        super.viewDidLoad()

        PHPhotoLibrary.requestAuthorization(for: .readWrite) {[weak self] status in
            guard let self = self else { return }
            if status == .limited || status == .authorized {

                self.fetch()
                PHPhotoLibrary.shared().register(self)

                PHPhotoLibrary.shared().presentLimitedLibraryPicker(from: self)
            }
        }
    }

    func fetch() {
        result = PHAsset.fetchAssets(with: nil)
    }
}

extension ViewController: PHPhotoLibraryChangeObserver {
    func photoLibraryDidChange(_ changeInstance: PHChange) {
        guard let result = result else { return }

        if let detail = changeInstance.changeDetails(for: result) {
            print("detail",detail)

            self.result = detail.fetchResultAfterChanges
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。