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

时间:2019-12-28 17:12:40

标签: swift serialization apple-pencil

我正在使用Swift开发的应用程序,其中包含PencilKit和带有“ canvasview”功能的笔记。一切正常,但是我找不到将 canvasView.drawing 返回的值“转换”为String以便将其上传并存储到数据库中的方法。

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

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

预先感谢

1 个答案:

答案 0 :(得分:2)

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

# shellcheck disable=SC2207
files=( $(zgrep -lw "${text}" "${directory}"/{01..31}/{sipd.logthenthedate.gz,sipmsg.logthenthedate.gz} 2>/dev/null) )

for file in "${files[@]}"; do
# etc.

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

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