首页 > 解决方案 > 在 Swift 中使用 PencilKit。将 PKDrawing 保存到数据库中的最佳方法是什么?如何序列化它?

问题描述

我正在一个使用 Swift 的应用程序中工作,该应用程序包括带有“canvasview”的 PencilKit 来记笔记。一切正常,但我找不到将 canvasView.drawing返回的值“转换”为 String 以将其上传并存储到数据库中的方法。

我可以获得一个图像,甚至是一个“base64EncodedString”,但我需要一种方法将“绘图”发送到服务器,然后从中加载,并显示在 canvasView 中。

我已经测试过将其转换为json,但是当从服务器加载时,我无法“反序列化”并再次将其转换为“绘图” 呵呵。

提前致谢

标签: swiftserializationapple-pencilpencilkit

解决方案


如果要将其还原为 PKDrawing 对象,则只有一个选择-使用 drawing.dataRepresentation() 来获取可以存储或写出的 Data 对象等。例如,我使用它来保存到 SQL 数据库:

self.pageEntity?.setValue(self.canvasView.drawing.dataRepresentation(), forKey: "markup")

您无法解释数据对象的结果,但您可以将其重新导入到 PKDrawing 中,如下所示:

do {
    try d = PKDrawing.init(data: markup)
        canvasView.drawing = d
    } catch {
        print("Error loading drawing object")
    }
}

推荐阅读