feat: modify entities

This commit is contained in:
dscyrescotti
2024-05-09 08:28:16 +07:00
parent 0fc277ca5b
commit cd6048bbd0
5 changed files with 12 additions and 8 deletions

View File

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

View File

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

View File

@@ -31,6 +31,9 @@ struct MemosView: View {
}
.fullScreenCover(item: $memo) { memo in
MemoView(canvas: memo.canvas)
.onDisappear {
managedObjectContext.refreshAllObjects()
}
}
}

View File

@@ -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`")

View File

@@ -4,7 +4,7 @@
<attribute name="height" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/>
<attribute name="id" attributeType="UUID" usesScalarValueType="NO"/>
<attribute name="width" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/>
<relationship name="graphicContext" maxCount="1" deletionRule="Cascade" destinationEntity="GraphicContext" inverseName="canvas" inverseEntity="GraphicContext"/>
<relationship name="graphicContext" optional="YES" maxCount="1" deletionRule="Cascade" destinationEntity="GraphicContext" inverseName="canvas" inverseEntity="GraphicContext"/>
<relationship name="memo" maxCount="1" deletionRule="Deny" destinationEntity="Memo" inverseName="canvas" inverseEntity="Memo"/>
</entity>
<entity name="GraphicContext" representedClassName="GraphicContext" syncable="YES">