mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-03-12 21:35:25 +01:00
feat: modify entities
This commit is contained in:
@@ -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?
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -31,6 +31,9 @@ struct MemosView: View {
|
||||
}
|
||||
.fullScreenCover(item: $memo) { memo in
|
||||
MemoView(canvas: memo.canvas)
|
||||
.onDisappear {
|
||||
managedObjectContext.refreshAllObjects()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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`")
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user