Stops saving the raw core data objects in view models and makes them optional in the constructor.

This commit is contained in:
2021-03-23 23:15:02 -07:00
parent 23a33f7ffe
commit 6459ad0125
10 changed files with 10 additions and 37 deletions

View File

@@ -10,8 +10,6 @@ import CoreData
class MonsterViewModel: ObservableObject {
private var rawMonster: Monster?
@Published var name: String
@Published var size: String
@Published var type: String
@@ -56,7 +54,7 @@ class MonsterViewModel: ObservableObject {
@Published var damageVulnerabilities: [DamageTypeViewModel]
@Published var conditionImmunities: [DamageTypeViewModel]
init(_ rawMonster: Monster?) {
init(_ rawMonster: Monster? = nil) {
self.name = ""
self.size = ""
self.type = ""
@@ -102,7 +100,6 @@ class MonsterViewModel: ObservableObject {
self.conditionImmunities = []
if (rawMonster != nil) {
self.rawMonster = rawMonster
self.copyFromMonster(monster: rawMonster!)
}
}
@@ -224,15 +221,6 @@ class MonsterViewModel: ObservableObject {
monster.addToSkills(skillVM.buildRawSkill(context: monster.managedObjectContext))
}
}
}
func copyFromRaw() {
if (self.rawMonster != nil) {
self.copyFromMonster(monster: self.rawMonster!);
}
}
func copyToRaw() {
monster.conditionImmunities = conditionImmunities.map {$0.name}
monster.damageImmunities = damageImmunities.map {$0.name}

View File

@@ -52,7 +52,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
init(_ rawSkill: Skill?) {
if (rawSkill != nil) {
self.rawSkill = rawSkill
_name = rawSkill!.name ?? ""
_abilityScore = AbilityScore(rawValue: rawSkill!.abilityScoreName ?? "") ?? .strength
_proficiency = ProficiencyType(rawValue: rawSkill!.proficiency ?? "") ?? .none
@@ -66,8 +65,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
}
}
var rawSkill: Skill?
private var _name: String = ""
var name: String {
get {
@@ -78,9 +75,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
_name = newValue
// Notify changed name
}
if (rawSkill != nil) {
rawSkill!.name = newValue
}
}
}
@@ -94,9 +88,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
_abilityScore = newValue
// Notify changed
}
if (rawSkill != nil) {
rawSkill!.wrappedAbilityScore = newValue
}
}
}
@@ -110,9 +101,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
_proficiency = newValue
// Notify changed
}
if (rawSkill != nil) {
rawSkill!.wrappedProficiency = newValue
}
}
}
@@ -126,9 +114,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable {
_advantage = newValue
// Notify changed
}
if (rawSkill != nil) {
rawSkill!.wrappedAdvantage = newValue
}
}
}

View File

@@ -36,7 +36,7 @@ struct EditAbilityScores: View {
struct EditAbilityScores_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditAbilityScores(monsterViewModel: viewModel)
}
}

View File

@@ -38,7 +38,7 @@ struct EditArmor: View {
struct EditArmor_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditArmor(monsterViewModel: viewModel)
}
}

View File

@@ -48,7 +48,7 @@ struct EditDamageTypes: View {
struct EditDamageTypes_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditDamageTypes(viewModel: viewModel, path: \.damageImmunities)
}
}

View File

@@ -15,7 +15,7 @@ struct EditMonster: View {
var monster: Monster
@StateObject private var monsterViewModel: MonsterViewModel = MonsterViewModel(nil)
@StateObject private var monsterViewModel: MonsterViewModel = MonsterViewModel()
@State private var hasInitializedViewModel = false
var body: some View {

View File

@@ -73,7 +73,7 @@ struct EditSavingThrows: View {
struct EditSavingThrows_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditSavingThrows(monsterViewModel: viewModel)
}
}

View File

@@ -33,7 +33,7 @@ struct EditSkill: View {
struct EditSkill_Previews: PreviewProvider {
static var previews: some View {
let viewModel = SkillViewModel(nil)
let viewModel = SkillViewModel()
EditSkill(skillViewModel: viewModel)
}
}

View File

@@ -24,7 +24,7 @@ struct EditSkills: View {
.toolbar(content: {
Button(
action: {
let newSkill = SkillViewModel(nil)
let newSkill = SkillViewModel()
newSkill.name = "New Skill"
monsterViewModel.skills.append(newSkill)
},
@@ -41,7 +41,7 @@ struct EditSkills: View {
struct EditSkills_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditSkills(monsterViewModel: viewModel)
}
}

View File

@@ -67,7 +67,7 @@ struct EditSpeed: View {
struct EditSpeed_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel(nil)
let viewModel = MonsterViewModel()
EditSpeed(monsterViewModel: viewModel)
}
}