Sort NSArray with sortedArrayUsingComparator

后端 未结 5 633
生来不讨喜
生来不讨喜 2020-12-14 01:36

In Objective-C I can sort an NSArray using this statement:

NSArray *sortedArray = [persons sortedArrayUsingComparator:^NSComparison         


        
5条回答
  •  星月不相逢
    2020-12-14 02:13

    So try just write the same with Swift:

    var sortedArray:NSArray = 
    persons.sortedArrayUsingComparator(){(p1:AnyObject!, p2:AnyObject!) -> NSComparisonResult in
    
        if (p1 as Person).name > (p2 as Person).name {
           return NSComparisonResult.OrderedDescending
        }
        if (p1 as Person).name < (p2 as Person).name {
            return NSComparisonResult.OrderedAscending
        }
        return NSComparisonResult.OrderedAscending
     }
    

    Test (Playground):

    class Person{
      var name:String?
    }
    
    var p1:Person = Person()
    p1.name = "a"    
    
    var p3:Person = Person()
    p3.name = "c"
    
    var p2:Person = Person()
    p2.name = "b"
    
    var persons:NSArray = [p1,p3,p2]
    
    var sortedArray:NSArray = persons.sortedArrayUsingComparator(){
    
        (p1:AnyObject!, p2:AnyObject!) -> NSComparisonResult in
    
        if (p1 as Person).name > (p2 as Person).name {
           return NSComparisonResult.OrderedDescending
        }
        if (p1 as Person).name < (p2 as Person).name {
            return NSComparisonResult.OrderedAscending
        }
        return NSComparisonResult.OrderedAscending
        }
    
    for item:AnyObject in sortedArray{
        println((item as Person).name)
    }
    

    Output:

    Optional("a")
    Optional("b")
    Optional("c")
    

提交回复
热议问题