struct Category: Identifiable { let id = UUID().uuidString var name: String var subcategories: [Category]? //this type MUST be the same as the parent var sortedSubcategories: [Category]? { subcategories?.sorted(by: { $0.name < $1.name }) } }