longitachi / ZLPhotoBrowser

Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器,支持预览/相册内拍照及录视频、拖拽/滑动选择,编辑图片/视频,支持多语言国际化等功能;
MIT License
4.72k stars 953 forks source link

选择相同照片以后,预览照片时带编辑功能,会崩溃,提示数组越界 #798

Closed OceanAndWu closed 1 year ago

OceanAndWu commented 1 year ago

Issue Description

选择相同照片以后,预览照片时带编辑功能,会崩溃,提示数组越界

Description and Steps

Please fill in the detailed description of the issue (full output of any stack trace, compiler error, ...) and the steps to reproduce the issue.

Info

ZLPhotoBrowser version: e.g. 4.3.8 Device: e.g. iPhone X Device version: e.g. iOS 14.0 Xcode version: e.g. Xcode 12.0

Configuration code of ZLPhotoConfiguration

选择相同照片时,通过下面代码对图片进行展示的时候,会崩溃,提示数组越界,看源码是因为删除了相同的asset. let ac = ZLPhotoPreviewSheet() ac.selectImageBlock = { [weak self] results, isOriginal in guard let self = self else { return } self.images = results.map { $0.image } self.assets = results.map { $0.asset } // self.isOriginal = isOriginal self.collectionView.reloadData() debugPrint("images: (self.images)") debugPrint("assets: (self.assets)") debugPrint("isEdited: (results.map { $0.isEdited })") debugPrint("isOriginal: (isOriginal)") }

        ac.previewAssets(sender: self, assets: assets, index: indexPath.row, isOriginal:false , showBottomViewAndSelectBtn: true)
OceanAndWu commented 1 year ago

你好。先前的崩溃的问题已经不存在了 但是选择2张相同的照片,对其中一张照片进行编辑,编辑完成以后,就会返回一张照片,相同的照片都会进行编辑,我选择的俩张照片变成了一张

OceanAndWu commented 1 year ago

@longitachi

OceanAndWu commented 1 year ago

// let models = assets.zl.removeDuplicate().map { asset -> ZLPhotoModel in // let m = ZLPhotoModel(asset: asset) // m.isSelected = true // return m // }

    let models  = assets.map { asset -> ZLPhotoModel in
        let m = ZLPhotoModel(asset: asset)
        m.isSelected = true
        return m
    }

我移除了删除操作,好像可以满足的我需求

longitachi commented 1 year ago

// let models = assets.zl.removeDuplicate().map { asset -> ZLPhotoModel in // let m = ZLPhotoModel(asset: asset) // m.isSelected = true // return m // }

    let models  = assets.map { asset -> ZLPhotoModel in
        let m = ZLPhotoModel(asset: asset)
        m.isSelected = true
        return m
    }

我移除了删除操作,好像可以满足的我需求

这样写会出现UI上的一些问题,右上角序号,下方预览图选中状态等

OceanAndWu commented 1 year ago

是的,预览界面会出现UI上的问题,你有什么好的解决办法吗

longitachi commented 1 year ago

仅预览的话可以用ZLImagePreviewController,否则就移除重复的asset。 或者你fork下改下逻辑之类的

OceanAndWu commented 1 year ago

好的,感谢大佬!