一尘不染

使用sortedArrayUsingComparator对NSArray进行排序

swift

Objective-C我可以排序的NSArray使用此声明:

NSArray *sortedArray = [persons sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2) {
    return [p1.name compare:p2.name];
}];

我无法使用 Swift 重现相同的语句。我发现的只是使用Array


阅读 219

收藏
2020-07-07

共1个答案

一尘不染

您可以使用Swift的内置排序函数,也可以使用Swift数组,因为Swift数组是桥接的,因此NSArray可以sortedArrayUsingComparator直接从swift
调用。

使用Swift的sorted功能:

var sortedArray = sorted(persons) {
    (obj1, obj2) in

    // The downcast to Person is only needed if persons is an NSArray or a Swift Array of AnyObjects
    let p1 = obj1 as Person
    let p2 = obj2 as Person
    return p1.name < p2.name
}

或者,使用NSArraysortedArrayUsingComparator

var sortedArray = persons.sortedArrayUsingComparator {
    (obj1, obj2) -> NSComparisonResult in

    let p1 = obj1 as Person
    let p2 = obj2 as Person
    let result = p1.name.compare(p2.name)
    return result
}
2020-07-07