【问题标题】:Storing a PKDrawing object to Core Data将 PKDrawing 对象存储到 Core Data
【发布时间】:2021-11-17 06:48:29
【问题描述】:

我正在尝试将 Apple Pencil 支持添加到我的思维导图应用程序中。我已经在我的应用程序中使用 Core Data 进行数据持久化,这一切都可以正常工作,没有任何错误。

我的 Apple Pencil 功能正常,但我在存储 Apple Pencil 数据时遇到问题。

我尝试将 PKDrawing 对象添加到我的 MindMap 数据模型,但我不断收到编译时错误“在范围内找不到类型 'PKDrawing'”

就我而言,我可以将 PKDrawing 对象存储到核心数据中,然后在应用加载时将其取回。但我显然做得不对。

非常感谢大家的帮助。

谢谢

更新:

所以我用过:

func convertToData(pkdrawing: PKDrawing) -> Data {
    let data = pkdrawing.dataRepresentation()
    return data
}

然后更新了我的模型数据和 savedContext 似乎一切正常。问题是当我尝试在打开应用程序时初始化数据时。我有:

func createDrawing(data: Data) -> PKDrawing {
    
    var loadedDrawing: PKDrawing
    
    do {
        try loadedDrawing = PKDrawing.init(from: data as! Decoder)
        return loadedDrawing
    } catch {
        print("Error loading drawing object")
        return PKDrawing()
    }
}

这给了我错误:

无法将“Foundation.Data”(0x1f3851a98)类型的值转换为“Swift.Decoder”(0x1ee5381a8)。 2021-09-24 06:22:58.912173+0100 MindMappingApp[1137:612856] 无法将“Foundation.Data”(0x1f3851a98)类型的值转换为“Swift.Decoder”(0x1ee5381a8)。

我试过了:

尝试loadedDrawing = PKDrawing.init(from: data as!Decoder)

作为:

尝试loadedDrawing = PKDrawing.init(来自:数据)

但我一直得到:

参数类型“数据”不符合预期类型“解码器”

有什么想法吗?在此先感谢:)

【问题讨论】:

    标签: ios swift core-data pencilkit


    【解决方案1】:

    与其尝试直接存储PKDrawing,不如存储与之关联的Data

    您的核心数据模型将有一个类型为 Data 的字段(如果您使用的是 GUI,则为二进制数据)。

    当您需要实际使用该数据并隐蔽到/从PKDrawing 时,您可以使用:

    【讨论】:

    • 这回答了你的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多