0

I am trying to add Apple Pencil support to my mind mapping app. I already use Core Data within my app for data persistence which all works fine without any bugs.

I have my Apple Pencil features working fine but I'm having trouble storing the Apple Pencil data.

Ive tried to add a PKDrawing object to my MindMap data model but I keep getting a compile time error 'cannot find type 'PKDrawing' in scope'

As far as I am away I can store the PKDrawing object into core data and then fetch it back out when the app loads. But I'm obviously not doing something right.

enter image description hereenter image description here

Any help is greatly appreciated folks.

Thank you

Update:

So I've used:

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

Then updated my model data and savedContext which all seems to work ok. The problem is when I try and initialise the data on opening the app. I have:

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()
    }
}

which gives me error:

Could not cast value of type 'Foundation.Data' (0x1f3851a98) to 'Swift.Decoder' (0x1ee5381a8). 2021-09-24 06:22:58.912173+0100 MindMappingApp[1137:612856] Could not cast value of type 'Foundation.Data' (0x1f3851a98) to 'Swift.Decoder' (0x1ee5381a8).

I tried:

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

as:

try loadedDrawing = PKDrawing.init(from: data)

but I kept getting:

Argument type 'Data' does not conform to expected type 'Decoder'

any ideas? Thanks in advance :)

Badger
  • 31
  • 4

1 Answers1

2

Instead of trying to store the PKDrawing directly, store the Data associated with it instead.

Your Core Data model will have a field with the type Data (or Binary Data if you're using the GUI).

When you need to actually use that data and covert to/from the PKDrawing, you can use:

jnpdx
  • 45,847
  • 6
  • 64
  • 94