2013-01-13 24 views
0

我有一個應該按名稱排序的數組,但只有一半被排序。我有一個可以分爲兩部分的條目列表,第一部分來自字典,只有屬性「名稱」,第二部分來自核心數據庫,並獲得了「addedByUser」屬性。 。這兩個列表都在tempArray內部並被添加到_resultsarray中,然後直接導向cellForRowAtIndexPath。但之前,我嘗試按名稱排列_resultsarray。現在問題發生了:首先出現沒有addedByUser屬性的列表(按名稱排序),然後出現另一個列表(帶有addedByUser屬性「),並按名稱排序,我無法讓它們混合使用NSSortdescriptor不是混合列表

[_resultsarray addObjectsFromArray:tempArray]; 

// Sort the list 
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
[_resultsarray sortUsingDescriptors:[NSArray arrayWithObject:sort2]]; 

我在做什麼錯謝謝

更新:我很抱歉,我忘了寫tempArray和_resultsarray都是可變的陣列

更新2:看起來這使得如果名稱以大寫或小寫字符開頭,則有區別。我更新的問題是,是否有方法對NSMutableArray進行排序,無論是否e字以大寫字母還是小寫字母開頭?

更新3:我發現:

NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 

回答

0

你應該寫一個NSComparoator,如:

_resultsarray = [tempArray sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
    NSString *name1 = ... ; // firstObject.name or firstObject.addedByUser 
    NSString *name2 = ... ; // secondObject.name or secondObject.addedByUser 
    return [name1 compare:name2]; 
}]; 
0

試試這個:

NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
_resultsarray = [tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort2]];