根据Swift

时间:2019-03-27 13:56:48

标签: swift string sorting optional

我正在尝试对类型为“ ObjCClass”的数组进行快速排序,这是一个目标c类。 'ObjCClass'具有属性'name',它是String类型的可选属性。我想基于'name'属性以升序对数组中的对象进行排序。如何在不进行力解包的情况下做到这一点?

我尝试使用此:

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

我一直在尝试使用guard和if / let语句来检查属性“ name”是否存在,但是由于我认为自己做得不正确,所以我一直遇到错误。如何检查数组中每个对象的属性是否存在,然后进行排序?

1 个答案:

答案 0 :(得分:1)

首先过滤掉不需要的条目,然后将name与强制展开进行比较

var sortedArray = unsortedArray
    .filter { $0.name != nil }
    .sorted { $0.name! < $1.name! }

注意:

    在这种情况下,
  • 强制解开是可以的,因为filter删除了nil个案例,而到我们来到sorted时,name 已经出席