diff --git a/MonsterCards/Models/LanguageViewModel.swift b/MonsterCards/Models/LanguageViewModel.swift index de6cad9..65bbccd 100644 --- a/MonsterCards/Models/LanguageViewModel.swift +++ b/MonsterCards/Models/LanguageViewModel.swift @@ -33,7 +33,7 @@ public class LanguageViewModel : NSObject, ObservableObject, Comparable, Identif @Published var name: String @Published var speaks: Bool - init( + public init( _ name: String = "", _ speaks: Bool = true ) { diff --git a/MonsterCards/Models/MonsterViewModel.swift b/MonsterCards/Models/MonsterViewModel.swift index b9fa6b9..e1a96f1 100644 --- a/MonsterCards/Models/MonsterViewModel.swift +++ b/MonsterCards/Models/MonsterViewModel.swift @@ -246,6 +246,8 @@ class MonsterViewModel: ObservableObject { monster.damageResistances = damageResistances.map {$0.name} monster.damageVulnerabilities = damageVulnerabilities.map {$0.name} monster.senses = senses.map {$0.name} + + // This is necessary so core data sees the language objects as changed. Without it they won't be persisted. monster.languages = languages.map {LanguageViewModel($0.name, $0.speaks)} } } diff --git a/MonsterCards/Views/EditLanguage.swift b/MonsterCards/Views/EditLanguage.swift index f6f352d..c6b07f0 100644 --- a/MonsterCards/Views/EditLanguage.swift +++ b/MonsterCards/Views/EditLanguage.swift @@ -11,12 +11,17 @@ struct EditLanguage: View { @ObservedObject var viewModel: LanguageViewModel var body: some View { - MCTextField( - label: "Name", - value: $viewModel.name) - .autocapitalization(.none) - - Toggle("Speaks", isOn: $viewModel.speaks) + VStack(alignment: .leading) { + MCTextField( + label: "Name", + value: $viewModel.name) + .autocapitalization(.none) + + Toggle("Speaks", isOn: $viewModel.speaks) + + Spacer() + } + .padding() } }