From eb7199d5a973a7d734c662dd3d50aa956c6f0647 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Sun, 21 Mar 2021 18:28:04 -0700 Subject: [PATCH] Sorts skills specifically for the EditSkills view, but also more generally when creating a MonsterViewModel. --- MonsterCards/Models/MonsterViewModel.swift | 2 +- MonsterCards/Models/SkillViewModel.swift | 6 +++++- MonsterCards/Views/EditSkills.swift | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/MonsterCards/Models/MonsterViewModel.swift b/MonsterCards/Models/MonsterViewModel.swift index c8866b7..05aa1fe 100644 --- a/MonsterCards/Models/MonsterViewModel.swift +++ b/MonsterCards/Models/MonsterViewModel.swift @@ -138,7 +138,7 @@ class MonsterViewModel: ObservableObject { self.charismaScore = monster.charismaScore self.charismaSavingThrowAdvantage = monster.charismaSavingThrowAdvantageEnum self.charismaSavingThrowProficiency = monster.charismaSavingThrowProficiencyEnum - self.skills = (monster.skills?.allObjects.map {SkillViewModel(($0 as! Skill))})! + self.skills = (monster.skills?.allObjects.map {SkillViewModel(($0 as! Skill))})!.sorted() } func copyToMonster(monster: Monster) { diff --git a/MonsterCards/Models/SkillViewModel.swift b/MonsterCards/Models/SkillViewModel.swift index 29c7f86..d8a8a66 100644 --- a/MonsterCards/Models/SkillViewModel.swift +++ b/MonsterCards/Models/SkillViewModel.swift @@ -8,7 +8,11 @@ import Foundation import CoreData -class SkillViewModel: ObservableObject, Hashable, Identifiable { +class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { + static func < (lhs: SkillViewModel, rhs: SkillViewModel) -> Bool { + return lhs.name < rhs.name + } + static func == (lhs: SkillViewModel, rhs: SkillViewModel) -> Bool { return lhs.abilityScore == rhs.abilityScore && lhs.advantage == rhs.advantage diff --git a/MonsterCards/Views/EditSkills.swift b/MonsterCards/Views/EditSkills.swift index 4ad77e6..c2606c7 100644 --- a/MonsterCards/Views/EditSkills.swift +++ b/MonsterCards/Views/EditSkills.swift @@ -33,6 +33,9 @@ struct EditSkills: View { } ) }) + .onAppear(perform: { + monsterViewModel.skills = monsterViewModel.skills.sorted() + }) } }