溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

使用NSComparisonResult進(jìn)行自定義排序的示例是什么

發(fā)布時(shí)間:2024-05-29 10:56:05 來(lái)源:億速云 閱讀:93 作者:小樊 欄目:移動(dòng)開(kāi)發(fā)

NSComparisonResult是一個(gè)枚舉類(lèi)型,用于表示兩個(gè)對(duì)象的比較結(jié)果。通過(guò)實(shí)現(xiàn)比較方法來(lái)自定義排序可以使用NSComparisonResult。

示例代碼如下,假設(shè)有一個(gè)Person類(lèi),包含姓名和年齡屬性,我們想按照年齡來(lái)對(duì)Person對(duì)象進(jìn)行排序:

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;

- (NSComparisonResult)compareByAge:(Person *)otherPerson;

@end

@implementation Person

- (NSComparisonResult)compareByAge:(Person *)otherPerson {
    if (self.age < otherPerson.age) {
        return NSOrderedAscending;
    } else if (self.age > otherPerson.age) {
        return NSOrderedDescending;
    } else {
        return NSOrderedSame;
    }
}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *person1 = [[Person alloc] init];
        person1.name = @"Alice";
        person1.age = 25;
        
        Person *person2 = [[Person alloc] init];
        person2.name = @"Bob";
        person2.age = 30;
        
        NSComparisonResult result = [person1 compareByAge:person2];
        
        if (result == NSOrderedAscending) {
            NSLog(@"%@ is younger than %@", person1.name, person2.name);
        } else if (result == NSOrderedDescending) {
            NSLog(@"%@ is older than %@", person1.name, person2.name);
        } else {
            NSLog(@"%@ and %@ are the same age", person1.name, person2.name);
        }
    }
    return 0;
}

在上面的示例中,我們定義了一個(gè)compareByAge方法,用于比較兩個(gè)Person對(duì)象的年齡。通過(guò)調(diào)用該方法,我們可以獲取兩個(gè)對(duì)象的比較結(jié)果,并根據(jù)結(jié)果進(jìn)行自定義排序。

當(dāng)運(yùn)行代碼時(shí),會(huì)輸出結(jié)果:“Alice is younger than Bob”,因?yàn)锳lice的年齡比Bob小。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI