Swift - 对NSSSet的内容进行排序

问题描述 投票:0回答:1

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

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

我尝试了以下内容

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

我哪里错了?

谢谢。

ios swift3 nsset
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.