所以我有一個自定義的「元素」對象(嘿保持原子序數,化學符號,原子量等...)的數組,我無法通過它們的一個屬性對它們進行排序;排序自定義對象數組的問題
下面是代碼:
switch (sortDescriptor) {
case 0: {
//Sort the array by "ATOMIC NUMBER"
NSArray *sortedArray = [self.elementsArray sortedArrayUsingComparator:^(id a, id b) {
NSNumber *first = @([(SAMElement *)a atomicNumber]);
NSNumber *second = @([(SAMElement *)b atomicNumber]);
return [first compare:second];
}];
self.elementsArray = [sortedArray mutableCopy];
}
case 1: {
//Sort the array by "ELEMENT NAME"
NSArray *sortedArray = [self.elementsArray sortedArrayUsingComparator:^(id a, id b) {
NSString *first = [(SAMElement *)a elementName];
NSString *second = [(SAMElement *)b elementName];
return [first compare:second];
}];
self.elementsArray = [sortedArray mutableCopy];
}
case 2:{
NSLog(@"sorting by chemical symbol");
//Sort the array by "CHEMICAL SYMBOL"
NSArray *sortedArray = [self.elementsArray sortedArrayUsingComparator:^(id a, id b) {
NSString *first = [(SAMElement *)a chemichalSymbol];
NSString *second = [(SAMElement *)b chemichalSymbol];
return [first compare:second];
}];
self.elementsArray = [sortedArray mutableCopy];
}
case 3: {
//Sort the array by "ATOMIC MASS"
NSArray *sortedArray = [self.elementsArray sortedArrayUsingComparator:^(id a, id b) {
NSNumber *first = [(SAMElement *)a atomicMass];
NSNumber *second = [(SAMElement *)b atomicMass];
return [first compare:second];
}];
self.elementsArray = [sortedArray mutableCopy];
}
default:
break;
}
當是各種各樣返回元素的完全隨機的名單。難道我做錯了什麼?
您是否調試過代碼以使「第一個」和「第二個」屬性的值保持一致? –
你是否故意在案例塊之後忽略'break;',以便例如當sortDescriptor == 2時,數組首先按化學符號排序,然後再按原子質量排序? – jaetzold
有沒有任何答案適合你?如果是,請接受其中一個,以便從未答覆中刪除您的問題。如果沒有,請給出一些反饋與新的信息。 –