【问题标题】:Using PencilKit in Swift. What is the best way to save PKDrawing into a database? How to serialize it?在 Swift 中使用 PencilKit。将 PKDrawing 保存到数据库中的最佳方法是什么?如何序列化它?
【发布时间】:2019-12-28 17:12:40
【问题描述】:
我正在一个使用 Swift 的应用程序中工作,该应用程序包括带有“canvasview”的 PencilKit 来做笔记。一切正常,但我找不到将 canvasView.drawing 返回的值“转换”为 String 以将其上传并存储到数据库中的方法。
我可以获取图像,甚至是“base64EncodedString”,但我需要一种方法将“绘图”发送到服务器,然后从中加载,并显示在 canvasView 中。
我已经测试了将其转换为json,但是我无法“反序列化”并再次将其转换为“绘图”,当从服务器加载时嘿嘿。
提前致谢
【问题讨论】:
标签:
swift
serialization
apple-pencil
pencilkit
【解决方案1】:
如果要将其还原为 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")
}
}