I am trying to create a dictionary app using CoreData. The data model I'm trying to recreate with CD is like this (for demonstration purposes):
struct Word: Codable {
let id, word, transliteration: String
let wordClasses: [WordClass]
let userNotes: [UserNote]
let userTag: String
}
struct UserNote: Codable {
let userNote: String
}
struct WordClass: Codable {
let wordClass: String
let translations: Translations
let examples: [Example]
}
struct Example: Codable {
let example: String
}
struct Translations: Codable {
let en, tr, ru: String
}
Here's the relationship model I've created.
When I create NSManagedObjectSubclass from these entities, for instance, WordClass and/or UserNote variables are created as objects, not object arrays, like below. Also every child object has the parent as a variable. Is that right?
I am still new to CoreData, and before I dive into this, I'd appreciate any feedback.
extension Word {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Word> {
return NSFetchRequest<Word>(entityName: "Word")
}
@NSManaged public var id: UUID?
@NSManaged public var word: String?
@NSManaged public var transliteration: String?
@NSManaged public var tag: String?
@NSManaged public var userNotes: UserNote?
@NSManaged public var wordClasses: WordClass?
}
extension WordClass {
@nonobjc public class func fetchRequest() -> NSFetchRequest<WordClass> {
return NSFetchRequest<WordClass>(entityName: "WordClass")
}
@NSManaged public var wordClass: String?
@NSManaged public var word: Word?
@NSManaged public var translations: Translation?
@NSManaged public var examples: Examples?
}
extension Translation {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Translation> {
return NSFetchRequest<Translation>(entityName: "Translation")
}
@NSManaged public var en: String?
@NSManaged public var tr: String?
@NSManaged public var ru: String?
@NSManaged public var wordClass: WordClass?
}
extension Examples {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Examples> {
return NSFetchRequest<Examples>(entityName: "Examples")
}
@NSManaged public var example: String?
@NSManaged public var wordClass: WordClass?
}
extension UserNote {
@nonobjc public class func fetchRequest() -> NSFetchRequest<UserNote> {
return NSFetchRequest<UserNote>(entityName: "UserNote")
}
@NSManaged public var userNote: String?
@NSManaged public var word: Word?
}
Thank you!