如何修复“此解码器将仅解码采用 NSSecureCoding 的类。类'UIImageView'不采用它。

How to fix "This decoder will only decode classes that adopt NSSecureCoding. Class 'UIImageView' does not adopt it."

提问人:Ali Akbar 提问时间:1/19/2022 更新时间:1/19/2022 访问量:401

问:

我正在尝试存档我的,其中包含许多和.UIImageViewCaLayersViews

我通过以下代码成功将“UIImageView”保存为数据。

        let data = try? NSKeyedArchiver.archivedData(withRootObject: self.backgroundIV!, requiringSecureCoding: false)
        print(data)

当我尝试通过以下代码取消存档表单时。UIImageViewData

do {
            let imageView: UIImageView = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIImageView.self, from: data!)!
            self.backgroundIV = imageView
            print("Un Archived...")
        } catch {
            print(error)
        }
   }

我收到这个错误..

Optional(922 bytes)
Error Domain=NSCocoaErrorDomain Code=4864 "This decoder will only decode classes that adopt NSSecureCoding. Class 'UIImageView' does not adopt it." UserInfo={NSDebugDescription=This decoder will only decode classes that adopt NSSecureCoding. Class 'UIImageView' does not adopt it.
}
Swift UIImageView nsdate nskeyedarchiver nskeyedunarchiver

评论

2赞 Leo Dabus 1/19/2022
为什么需要存档 imageView?只需保存您的图像
0赞 Ali Akbar 1/19/2022
我正在解析 SVG 路径并将它们转换为 CAShapeLayers,然后将该层作为子层添加到 UIImageView 中。我可以更改图层颜色以及调整它们的大小,我需要将它们保存到本地存储中以备将来编辑。我尝试将UIImageView的图像保存为数据,然后检索它,但我无法对其执行任何操作,因为图像在保存到数据后不再包含图层。这就是为什么我试图将整个UIImageView保存为数据的原因。
0赞 Leo Dabus 1/19/2022
保存所有信息并重建图像视图。顺便说一句,您应该使用容器视图而不是图像视图
0赞 Ali Akbar 1/19/2022
我不知道如何保存所有信息,因为我是iOS的新手。

答: 暂无答案