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 @@
-
+