Objective-C sortUsingSelector方法

來源:互聯網
上載者:User

標籤:

今天我們學習兩個方法, 一個是對字串進行排序的方法,一個是對常量數進行排序的方法.

建立一個Person類,並且在Person.h檔案中,設定執行個體 初始化 以及setter getter方法  另外把排序的方法聲明在Person.h檔案中.

#import <Foundation/Foundation.h>

@interface Person : NSObject

//1.設定三個執行個體 name sex age

{

    NSString *_name;

    NSString *_sex;

    NSInteger _age;

}

//2.指定初始化

- (id)initWithName:(NSString *)name

               sex:(NSString *)sex

               age:(NSInteger)age;

//3.setter getter方法

- (void)setName:(NSString *)name;

- (NSString *)name;

- (void)setSex:(NSString *)sex;

- (NSString *)sex;

- (void)setAge:(NSInteger)age;

- (NSInteger)age;

//4.聲明一個按姓名排序的方法

- (NSComparisonResult)compareByNameWithOtherPerson:(Person *)anotherPerson;

//5.聲明一個按年齡排序的方法

- (NSComparisonResult)compareByAgeWithOtherPerson:(Person*)anotherPerson;

//6.聲明一個description

- (NSString *)description;

@end

//調轉到Person.m中進行方法的實現

在Person.h檔案中聲明之後,將2.3.4.5.6複製下來,到Person.m檔案進行實現.

#import "Person.h"

 

@implementation Person

//2.指定初始化

- (id)initWithName:(NSString *)name

               sex:(NSString *)sex

               age:(NSInteger)age

{

    self = [super init];

    if (self) {

        _name = name;

        _sex = sex;

        _age = age;

    }

    return self;

}

//3.setter getter方法

- (void)setName:(NSString *)name

{

    _name = name;

}

- (NSString *)name

{

    return _name;

}

- (void)setSex:(NSString *)sex

{

    _sex = sex;

}

- (NSString *)sex

{

    return _sex;

}

- (void)setAge:(NSInteger)age

{

    _age = age;

}

- (NSInteger)age

{

    return _age;

}

//4.聲明一個按姓名排序的方法

- (NSComparisonResult)compareByNameWithOtherPerson:(Person *)anotherPerson

{

    if ([self.name compare:anotherPerson.name] > 0) {

        return NSOrderedDescending;

    }else if ([self.name compare:anotherPerson.name] < 0)

    {

        return NSOrderedAscending;

    }

    return NSOrderedSame;

}

//5.聲明一個按年齡排序的方法

- (NSComparisonResult)compareByAgeWithOtherPerson:(Person*)anotherPerson

{

    if (self.age > anotherPerson.age) {

        return NSOrderedDescending;

    }else if (self.age < anotherPerson.age)

    {

        return NSOrderedAscending;

    }

    return NSOrderedSame;

}

//6.聲明一個description

- (NSString *)description

{

    return [NSString stringWithFormat:@"name:%@ , sex: %@, age:%ld",_name,_sex,_age];

}

@end

方法聲明及實現之後,我們就要跳轉到main函數中進行調用方法

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        //7.建立4個對象

        Person *obj1 = [[Person alloc] initWithName:@"Jack" sex:@"male" age:22];

        Person *obj2 = [[Person alloc] initWithName:@"Henry" sex:@"male" age:28];

        Person *obj3 = [[Person alloc] initWithName:@"Elyse" sex:@"female" age:26];

        Person *obj4 = [[Person alloc] initWithName:@"Lisa" sex:@"female" age:24];

        NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:obj1,obj2,obj3,obj4, nil];

        //8. 數組按照名字排序

        [array sortUsingSelector:@selector(compareByNameWithOtherPerson:)];

        //調用compareByName這個方法,在啟動並執行時候,會首先跳轉到Person.h中,看看有沒有這個方法,找到後,就會跳轉到Person.m中,運行方法,然後在跳轉到main函數中,把結果顯示出來.

        NSLog(@"%@",array);

        //9. 數組按照年齡排序

        [array sortUsingSelector:@selector(compareByAgeWithOtherPerson:)];

        //調用compareByAge這個方法,在啟動並執行時候,會首先跳轉到Person.h中,看看有沒有這個方法,找到後,就會跳轉到Person.m中,運行方法,然後在跳轉到main函數中,把結果顯示出來.

        NSLog(@"%@",array);

    }

    return 0;

}

這次主要是把字串排序和常量數的排序掌握, 以後應該還會經常用到,所以把方法記住! 

Objective-C sortUsingSelector方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.