根据 Swift 中的可选字符串属性对自定义对象数组进行排序

Anu*_*ini 5 sorting string optional swift

我正在尝试对类型为“ObjCClass”的 swift 数组进行排序,这是一个客观的 c 类。'ObjCClass' 具有属性 'name',它是 String 类型的可选项。我想根据“名称”属性按升序对数组中的对象进行排序。如何在不强制展开的情况下执行此操作?

我试过用这个:

var sortedArray = unsortedArray.sorted(by: { $0.name as String! < $1.name as String!})
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用守卫和 if/let 语句来检查属性“名称”是否存在,但我一直遇到错误,因为我认为我做得不对。如何检查数组中每个对象的属性是否存在,然后进行排序?

sta*_*Man 5

首先过滤掉不需要的条目,然后name与 force-unwrap进行比较

var sortedArray = unsortedArray
    .filter { $0.name != nil }
    .sorted { $0.name! < $1.name! }
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 力解包是在这种情况下很好,因为filter删除nil的情况下,由我们来的时候sortedname 已经是存在