編輯: 正如我想的那樣,甚至沒有問題,我只是使用錯誤的值來檢查我的結果。無法使用自定義比較器對兩個屬性進行排序
我比較我的數據庫的自定義對象和排序它們的目標有點麻煩,原則上,這很容易,排序機制必須與這個自定義對象的兩個屬性由字符串表示,但也可以包含數值。
這是我正在嘗試修復的自定義比較器塊。
NSArray *sortedArray = [baseAry sortedArrayUsingComparator:^NSComparisonResult(Obj *o1, Obj *o2) {
NSComparisonResult comp1 = [o1.attr_a compare:o2.attr_a];
if (comp1 == NSOrderedSame) {
return [o1.attr_b compare:o2.attr_b];
}
return [o1.attr_a compare:o2.attr_a];
}];
最後,列表應該是這樣的:
- 12 - 3
- 12 - 8
- 13 - 1
- 14 - 2
- 14 - 4
- 22 - 1 etc
但使用電流比較我只得到這樣一個結果:
- 12 - 8
- 12 - 3
- 13 - 1
- 14 - 4
- 14 - 2
- 22 - 3
- 22 - 2
- 22 - 1
是否有一個舒適的方式來做到這一點的代碼塊?我可以想象的另一種方法是將列表拆分爲子列表並將它們分開排序並將它們粘合在一起,但這可能需要更高的計算能力
如果你正在返回相同的值什麼是如果循環檢查比較是相同的? –
你的問題看起來類似於這個http://stackoverflow.com/questions/15610434/sorting-array-based-on-custom-object-values/15611004#15611004 –
你也可以這樣做: NSSortDescriptor * firstSorter = [[NSSortDescriptor alloc] initWithKey:@「firstProperty」升序:YES]; NSSortDescriptor * secondSorter = [[NSSortDescriptor alloc] initWithKey:@「secondProperty」升序:YES]; NSArray * sortedArray = [array sortedArrayUsingDescriptors:@ [firstSorter,secondSorter]]; –