diff --git a/Memola/Canvas/Contexts/GraphicContext.swift b/Memola/Canvas/Contexts/GraphicContext.swift index 0ace6d9..9e5f594 100644 --- a/Memola/Canvas/Contexts/GraphicContext.swift +++ b/Memola/Canvas/Contexts/GraphicContext.swift @@ -13,7 +13,7 @@ import Foundation @objc(GraphicContext) class GraphicContext: NSManagedObject { @NSManaged var id: UUID - @NSManaged var canvas: Canvas + @NSManaged var canvas: Canvas? @NSManaged var strokes: NSMutableOrderedSet var currentStroke: Stroke? diff --git a/Memola/Canvas/Core/Canvas.swift b/Memola/Canvas/Core/Canvas.swift index 4f93c28..05a845a 100644 --- a/Memola/Canvas/Core/Canvas.swift +++ b/Memola/Canvas/Core/Canvas.swift @@ -15,7 +15,7 @@ class Canvas: NSManagedObject, Identifiable { @NSManaged var id: UUID @NSManaged var width: CGFloat @NSManaged var height: CGFloat - @NSManaged var memo: Memo + @NSManaged var memo: Memo? @NSManaged var graphicContext: GraphicContext let gridContext = GridContext() @@ -43,8 +43,9 @@ class Canvas: NSManagedObject, Identifiable { extension Canvas { func load() { state = .loading - graphicContext.strokes.forEach { - ($0 as? Stroke)?.loadVertices() + graphicContext.strokes.forEach { stroke in + guard let stroke = stroke as? Stroke else { return } + stroke.loadVertices() } state = .loaded } diff --git a/Memola/Features/Memos/MemosView.swift b/Memola/Features/Memos/MemosView.swift index c52813a..4694446 100644 --- a/Memola/Features/Memos/MemosView.swift +++ b/Memola/Features/Memos/MemosView.swift @@ -31,6 +31,9 @@ struct MemosView: View { } .fullScreenCover(item: $memo) { memo in MemoView(canvas: memo.canvas) + .onDisappear { + managedObjectContext.refreshAllObjects() + } } } diff --git a/Memola/Persistence/Transformers/QuadValueTransformer.swift b/Memola/Persistence/Transformers/QuadValueTransformer.swift index f03c9f3..63b03b3 100644 --- a/Memola/Persistence/Transformers/QuadValueTransformer.swift +++ b/Memola/Persistence/Transformers/QuadValueTransformer.swift @@ -22,7 +22,7 @@ class QuadValueTransformer: ValueTransformer { return nil } do { - let data = try JSONEncoder().encode(quads) + let data = try JSONEncoder().encode(quads.map(\.quad)) return data } catch { print(error.localizedDescription) @@ -37,8 +37,8 @@ class QuadValueTransformer: ValueTransformer { return nil } do { - let quads = try JSONDecoder().decode([StrokeQuad].self, from: data) - return quads + let quads = try JSONDecoder().decode([Quad].self, from: data) + return quads.map(StrokeQuad.init) } catch { print(error.localizedDescription) assertionFailure("[Memola] - Failed to transform `Data` to `Quad`") diff --git a/Memola/Resources/Models/MemolaModel.xcdatamodeld/MemolaModel.xcdatamodel/contents b/Memola/Resources/Models/MemolaModel.xcdatamodeld/MemolaModel.xcdatamodel/contents index 0592f91..89c2561 100644 --- a/Memola/Resources/Models/MemolaModel.xcdatamodeld/MemolaModel.xcdatamodel/contents +++ b/Memola/Resources/Models/MemolaModel.xcdatamodeld/MemolaModel.xcdatamodel/contents @@ -4,7 +4,7 @@ - +