Swift - 对NSSSet的内容进行排序

时间:2017-07-08 19:11:09

标签: ios swift3 nsset

我正在使用Core Data获取诊所列表,诊所的关系名为医生映射到Doctor实体。

我的问题是,每次我取医生时都是NSSSet类型,记录是随机提取的,我想用Doctor.name按字母顺序对其进行排序

我尝试了以下

self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])

我哪里错了?

感谢。

1 个答案:

答案 0 :(得分:2)

(NS)Set是一种无序的集合类型。

命令Set将其转换为具有allObjects属性的数组并对数组进行排序。

self.doctorList = (clinic.doctors!.allObjects as! [Doctor]).sorted(by: { $0.name < $1.name })

您甚至可以直接 排序 该集合,但结果始终是数组

self.doctorList = (clinic.doctors as! Set<Doctor>).sorted(by: { $0.name < $1.name })

如果该集合被声明为本机Set<Doctor>,则可以省略类型转换。

我建议将doctors关系声明为非可选关系。如果没有相关医生,则该组为空。但是没有医生的诊所是不太可能的; - )

相关问题