From 6b0644bbefd03cd6670bc3ab0da3ba493b27253e Mon Sep 17 00:00:00 2001 From: oliverhnat Date: Wed, 1 May 2024 13:23:08 +0200 Subject: [PATCH] Add Data model for decks --- WordAX.xcodeproj/project.pbxproj | 28 +++++++++++- WordAX/Model/Deck/Deck+CoreDataClass.swift | 15 +++++++ .../Model/Deck/Deck+CoreDataProperties.swift | 44 +++++++++++++++++++ .../Flashcard+CoreDataClass.swift | 0 .../Flashcard+CoreDataProperties.swift | 0 .../WordAX0.0.4.xcdatamodel/contents | 7 ++- 6 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 WordAX/Model/Deck/Deck+CoreDataClass.swift create mode 100644 WordAX/Model/Deck/Deck+CoreDataProperties.swift rename WordAX/Model/{ => Flashcard}/Flashcard+CoreDataClass.swift (100%) rename WordAX/Model/{ => Flashcard}/Flashcard+CoreDataProperties.swift (100%) diff --git a/WordAX.xcodeproj/project.pbxproj b/WordAX.xcodeproj/project.pbxproj index f866c2e..a6ef9f8 100644 --- a/WordAX.xcodeproj/project.pbxproj +++ b/WordAX.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 6C4A87D22BE25D260074E0A9 /* Deck+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C4A87D02BE25D260074E0A9 /* Deck+CoreDataClass.swift */; }; + 6C4A87D32BE25D260074E0A9 /* Deck+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C4A87D12BE25D260074E0A9 /* Deck+CoreDataProperties.swift */; }; 6C8184FE2B88C9580033CF46 /* WordAX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8184FD2B88C9580033CF46 /* WordAX.swift */; }; 6C8185002B88C9660033CF46 /* WordAXModelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8184FF2B88C9660033CF46 /* WordAXModelView.swift */; }; 6C8185022B88C9FB0033CF46 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8185012B88C9FB0033CF46 /* SettingsView.swift */; }; @@ -28,6 +30,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 6C4A87D02BE25D260074E0A9 /* Deck+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Deck+CoreDataClass.swift"; sourceTree = ""; }; + 6C4A87D12BE25D260074E0A9 /* Deck+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Deck+CoreDataProperties.swift"; sourceTree = ""; }; 6C8184FD2B88C9580033CF46 /* WordAX.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordAX.swift; sourceTree = ""; }; 6C8184FF2B88C9660033CF46 /* WordAXModelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordAXModelView.swift; sourceTree = ""; }; 6C8185012B88C9FB0033CF46 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; @@ -81,13 +85,31 @@ path = Views; sourceTree = ""; }; + 6CD929862BE25B4600C2EB84 /* Deck */ = { + isa = PBXGroup; + children = ( + 6C4A87D02BE25D260074E0A9 /* Deck+CoreDataClass.swift */, + 6C4A87D12BE25D260074E0A9 /* Deck+CoreDataProperties.swift */, + ); + path = Deck; + sourceTree = ""; + }; + 6CD929872BE25B5100C2EB84 /* Flashcard */ = { + isa = PBXGroup; + children = ( + 6CEF7F822BC46B5900E205F6 /* Flashcard+CoreDataClass.swift */, + 6CEF7FA12BC88F6000E205F6 /* Flashcard+CoreDataProperties.swift */, + ); + path = Flashcard; + sourceTree = ""; + }; 6CEF7F7B2BC456A100E205F6 /* Model */ = { isa = PBXGroup; children = ( + 6CD929872BE25B5100C2EB84 /* Flashcard */, + 6CD929862BE25B4600C2EB84 /* Deck */, 6CEF7F7C2BC457E600E205F6 /* DataController.swift */, 6CEF7F7F2BC4694900E205F6 /* WordAXCD.xcdatamodeld */, - 6CEF7F822BC46B5900E205F6 /* Flashcard+CoreDataClass.swift */, - 6CEF7FA12BC88F6000E205F6 /* Flashcard+CoreDataProperties.swift */, ); path = Model; sourceTree = ""; @@ -214,6 +236,8 @@ 6CF439522B83541D004C3543 /* WordAXApp.swift in Sources */, 6CEF7F522BC2DBF800E205F6 /* AddFlashCardView.swift in Sources */, 6C8184FE2B88C9580033CF46 /* WordAX.swift in Sources */, + 6C4A87D22BE25D260074E0A9 /* Deck+CoreDataClass.swift in Sources */, + 6C4A87D32BE25D260074E0A9 /* Deck+CoreDataProperties.swift in Sources */, 6CEF7F812BC4694900E205F6 /* WordAXCD.xcdatamodeld in Sources */, 6C81850C2B8BA6BC0033CF46 /* FlashCardListRowView.swift in Sources */, 6CEF7F842BC46B5900E205F6 /* Flashcard+CoreDataClass.swift in Sources */, diff --git a/WordAX/Model/Deck/Deck+CoreDataClass.swift b/WordAX/Model/Deck/Deck+CoreDataClass.swift new file mode 100644 index 0000000..9899938 --- /dev/null +++ b/WordAX/Model/Deck/Deck+CoreDataClass.swift @@ -0,0 +1,15 @@ +// +// Deck+CoreDataClass.swift +// WordAX +// +// Created by Oliver Hnát on 01.05.2024. +// +// + +import Foundation +import CoreData + +@objc(Deck) +public class Deck: NSManagedObject { + +} diff --git a/WordAX/Model/Deck/Deck+CoreDataProperties.swift b/WordAX/Model/Deck/Deck+CoreDataProperties.swift new file mode 100644 index 0000000..eb83d29 --- /dev/null +++ b/WordAX/Model/Deck/Deck+CoreDataProperties.swift @@ -0,0 +1,44 @@ +// +// Deck+CoreDataProperties.swift +// WordAX +// +// Created by Oliver Hnát on 01.05.2024. +// +// + +import Foundation +import CoreData + + +extension Deck { + + @nonobjc public class func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: "Deck") + } + + @NSManaged public var id: UUID? + @NSManaged public var name: String? + @NSManaged public var flashcards: NSSet? + +} + +// MARK: Generated accessors for flashcards +extension Deck { + + @objc(addFlashcardsObject:) + @NSManaged public func addToFlashcards(_ value: Flashcard) + + @objc(removeFlashcardsObject:) + @NSManaged public func removeFromFlashcards(_ value: Flashcard) + + @objc(addFlashcards:) + @NSManaged public func addToFlashcards(_ values: NSSet) + + @objc(removeFlashcards:) + @NSManaged public func removeFromFlashcards(_ values: NSSet) + +} + +extension Deck : Identifiable { + +} diff --git a/WordAX/Model/Flashcard+CoreDataClass.swift b/WordAX/Model/Flashcard/Flashcard+CoreDataClass.swift similarity index 100% rename from WordAX/Model/Flashcard+CoreDataClass.swift rename to WordAX/Model/Flashcard/Flashcard+CoreDataClass.swift diff --git a/WordAX/Model/Flashcard+CoreDataProperties.swift b/WordAX/Model/Flashcard/Flashcard+CoreDataProperties.swift similarity index 100% rename from WordAX/Model/Flashcard+CoreDataProperties.swift rename to WordAX/Model/Flashcard/Flashcard+CoreDataProperties.swift diff --git a/WordAX/Model/WordAXCD.xcdatamodeld/WordAX0.0.4.xcdatamodel/contents b/WordAX/Model/WordAXCD.xcdatamodeld/WordAX0.0.4.xcdatamodel/contents index 0d69bce..3ddf8e8 100644 --- a/WordAX/Model/WordAXCD.xcdatamodeld/WordAX0.0.4.xcdatamodel/contents +++ b/WordAX/Model/WordAXCD.xcdatamodeld/WordAX0.0.4.xcdatamodel/contents @@ -1,6 +1,11 @@ - + + + + + +