Swift - 对NSSSet的内容进行排序
Swift - Sort the content of NSSSet
我正在使用 Core Data 获取诊所列表,这些诊所具有名为 doctors 的关系映射到 Doctor 实体。
我的问题是,每次我获取 NSSSet 类型的医生时,记录都是随机获取的,我想使用 Doctor.name
按字母顺序排序
我尝试了以下方法
self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])
我哪里错了?
谢谢。
(NS)Set
是无序集合类型。
要订购 Set
将其转换为具有 allObjects
的数组 属性 并对数组进行排序。
self.doctorList = (clinic.doctors!.allObjects as! [Doctor]).sorted(by: { [=10=].name < .name })
你甚至可以直接排序但是结果总是一个数组
self.doctorList = (clinic.doctors as! Set<Doctor>).sorted(by: { [=11=].name < .name })
并且如果集合被声明为原生 Set<Doctor>
无论如何您都可以省略类型转换。
我建议将 doctors
关系声明为非可选关系。如果没有关联的医生,则该集合为空。但是没有医生的诊所是不太可能的;-)
我正在使用 Core Data 获取诊所列表,这些诊所具有名为 doctors 的关系映射到 Doctor 实体。
我的问题是,每次我获取 NSSSet 类型的医生时,记录都是随机获取的,我想使用 Doctor.name
按字母顺序排序我尝试了以下方法
self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])
我哪里错了?
谢谢。
(NS)Set
是无序集合类型。
要订购 Set
将其转换为具有 allObjects
的数组 属性 并对数组进行排序。
self.doctorList = (clinic.doctors!.allObjects as! [Doctor]).sorted(by: { [=10=].name < .name })
你甚至可以直接排序但是结果总是一个数组
self.doctorList = (clinic.doctors as! Set<Doctor>).sorted(by: { [=11=].name < .name })
并且如果集合被声明为原生 Set<Doctor>
无论如何您都可以省略类型转换。
我建议将 doctors
关系声明为非可选关系。如果没有关联的医生,则该集合为空。但是没有医生的诊所是不太可能的;-)