oc72--NSArray排序

來源:互聯網
上載者:User

標籤:年齡   自訂   sorted   可變   string   sort   using   ring   atom   

//  Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic, assign) int age;@end
//  Person.m#import "Person.h"@implementation Person- (NSString *)description{    return [NSString stringWithFormat:@"age = %i", _age];}@end
////  main.m//  NSArray排序#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {    NSArray *arr1 = @[@10, @20, @5, @7, @15];  //oc中的數字,@5是oc的對象,    NSLog(@"排序前: %@", arr1);//(10,20,5,7,15)    // 注意: 想使用compare方法對數組中的元素進行排序, 那麼數組中的元素必須是Foundation架構中的對象(oc對象), 也就是說不能是自訂對象    NSArray *newArr1 = [arr1 sortedArrayUsingSelector:@selector(compare:)]; //NSArray是不可變的,所以要用新的數組接收。    NSLog(@"排序後: %@", newArr1);//(5,7,10,15,20)            Person *p1 = [Person new];    p1.age = 10;        Person *p2 = [Person new];    p2.age = 20;        Person *p3 = [Person new];    p3.age = 5;        Person *p4 = [Person new];    p4.age = 7;        NSArray *arr = @[p1, p2, p3, p4];    NSLog(@"排序前: %@", arr);//("age = 10","age = 20","age = 5","age = 7")    // 按照人的年齡進行排序    // 不能使用compare:方法對自訂對象進行排序    //NSArray *newArr11 = [arr sortedArrayUsingSelector:@selector(compare:)];        // 該方法預設會按照升序排序,NSSortStable表示是安全的,涉及多線程,    NSArray *newArr = [arr sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {        // 每次調用該block都會取出數組中的兩個元素給我們,二分演算法,        NSLog(@"obj1 = %@, obj2 = %@", obj1, obj2); //排序演算法        return obj1.age > obj2.age;//        return obj1.age < obj2.age;        /*        if (obj1.age > obj2.age) {            // 5 4            return NSOrderedDescending;        }else if(obj1.age < obj2.age)        {            // 4 5            return NSOrderedAscending;        }else        {            return NSOrderedSame;        }         */    }];    NSLog(@"排序後: %@", newArr);// ("age = 5","age = 7","age = 10","age = 20")    return 0;}

 

oc72--NSArray排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.