Swift-使用多个条件对对象数组进行排序

sbkl:

我有一个Contact对象数组

var contacts:[Contact] = [Contact]()

联系人类别:

Class Contact:NSOBject {
    var firstName:String!
    var lastName:String!
}

而且我想通过该数组进行排序lastName,然后firstName在某些情况下接触得到了相同的lastName

我可以按其中一个条件进行排序,但不能同时按两个条件进行排序。

contacts.sortInPlace({$0.lastName < $1.lastName})

我如何添加更多条件来对该数组进行排序?

亚历山大-恢复莫妮卡:

想一想“按多个标准排序”是什么意思。这意味着首先按一个条件比较两个对象。然后,如果这些条件相同,则联系将被下一个条件破坏,依此类推,直到获得所需的排序。

let sortedContacts = contacts.sort {
    if $0.lastName != $1.lastName { // first, compare by last names
        return $0.lastName < $1.lastName
    }
    /*  last names are the same, break ties by foo
    else if $0.foo != $1.foo {
        return $0.foo < $1.foo
    }
    ... repeat for all other fields in the sorting
    */
    else { // All other fields are tied, break ties by last name
        return $0.firstName < $1.firstName
    }
}

您在这里看到的是Sequence.sorted(by:)method,它参考提供的闭包来确定元素的比较方式。

如果您的排序将在许多地方使用,则最好使您的类型符合Comparable协议这样,您可以使用Sequence.sorted()method,该方法会咨询您的Comparable.<(_:_:)运算符实现,以确定元素之间的比较方式。这样,您可以对任何s进行排序SequenceContact而不必重复排序代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Guava Ordering对对象列表进行多条件排序

Swift:按字母顺序对对象数组进行排序

Swift 2.0按属性对对象数组进行排序

如何通过多个条件对Swift对象进行排序

swift-通过可选的boolean属性对对象数组进行排序,而无需强制展开

使用多个条件对对象数组进行排序

Swift-按另一个数组的属性对对象数组进行排序

JavaScript算法,用于通过多个条件对对象中的数组进行排序

使用其他数组对对象数组进行排序

如何根据多个条件对对象集合进行排序?

使用JavaScript按键的指定顺序对对象数组(具有多个属性)进行排序

如何同时使用多个键对对象数组进行排序?

按多个属性对对象数组进行排序

使用compareTo()对对象数组进行排序

使用选择排序对对象数组进行排序?

按照JavaScript中的多个规则对对象数组进行排序

无法对Swift数组进行排序

通过NSDate和String时间的混合对对象的Swift数组进行排序

在某些条件下对对象数组进行排序

使用 AlphaNumeric 对对象数组进行排序

JavaScript 根据值对对象数组进行排序(条件排序)

在 Swift3 iOS 中使用字符串参数对对象数组进行排序

使用 JavaScript 对对象数组进行排序

如何根据对象的属性通过递增顺序对对象数组进行排序 - Swift

Swift 5 根据对象值对对象数组进行分组和拆分

使用数组数组对键值对对象数组进行排序

JS 使用数组对对象数组进行排序

使用 Swift 根据对象到设备位置的距离对对象列表进行排序

使用多个日期属性对对象数组进行排序