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 关系声明为非可选关系。如果没有关联的医生,则该集合为空。但是没有医生的诊所是不太可能的;-)