2012-02-23 97 views
2

我有一個類Events如何使用類對象對NSMutableArray進行排序?

@interface MeEvents : NSObject { 
    NSString* name;**strong text** 
    NSString* location; 

} 

@property(nonatomic,retain)NSString* name;strong text 
@property(nonatomic,retain)NSString* location; 

在我NSMutablArray我添加活動

的對象
Events* meEvent; 
[tempArray addObject:meEvent]; 

請告訴我如何將這個數組由成員名稱排序。

回答

2

最簡單的方法是使用sortUsingComparator:這樣的:

[tempArray sortUsingComparator:^(id a, id b) { 
    return [[a name] compare:[b name]]; 
}]; 

如果您正在對這些字符串進行排序,因爲您想向用戶顯示排序列表,您應該改爲localizedCompare:

[tempArray sortUsingComparator:^(id a, id b) { 
    return [[a name] localizedCompare:[b name]]; 
}]; 

或者您可能想要使用localizedCaseInsensitiveCompare:

4
NSSortDescriptor *sortDes = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
     [tempArray_ sortUsingDescriptors:[NSArray arrayWithObject:sortDes]]; 
     [sortDes release]; 
+0

這給SIGABRT error.Sir我的數組返回類對象,像然後我收到Events中的對象* meEvent = [temparray objectAtIndex:i]; NSLog(@「Name%@」,meEvent.eventname); – 2012-02-23 08:33:06

+0

@SawanCool:你必須在[「initWithKey:」「]中定義鍵值,在上面的代碼中,我只是給出了一個」名稱「的例子。請用你的鍵初始化sortDescriptor。 – Sree 2012-02-23 08:39:30

1

可以使用NSArray

- (NSArray *)sortedArrayUsingSelector:(SEL)comparator 

方法

有關更多詳細信息,請參閱this數組排序,以便回答

+0

Plz描述你的答案。 – 2012-02-23 08:25:41

2

聲明這個在實現文件的頂部上方@interface line

NSComparisonResult sortByName(id firstItem, id secondItem, void *context); 

以下是該方法的實施

NSComparisonResult sortByName(id item1, id item2, void *context) 
{ 
    NSString *strItem1Name = [item1 name]; 
    NSString *strItem2Name = [item2 name]; 

    return [strItem1Name compare:strItem2Name]; //Ascending for strItem1Name you can reverse comparison for having descending result 
} 

這是你會怎麼稱呼它

[tempArray sortUsingFunction:sortByName context:@"Names"]; 
相關問題