我有一個字典數組,其鍵盤@「id」有NSNumber。我想根據@「id」值對這個數組進行排序。我該怎麼做?基於NSNumber的詞典排序數組
-2
A
回答
1
您可以使用NSSortDescriptor對字典進行排序。請試試這個:
// Example array containing three dictionaries with "id" and "name" keys
NSArray *unsortedArray = @[@{ @"id":@3, @"name":@"abc"}, @{ @"id":@1, @"name":@"123" }, @{ @"id": @2, @"name":@"xyz" }];
NSLog(@"Unsorted Array === %@", unsortedArray);
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
initWithKey: @"id" ascending: YES];
NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors: [NSArray arrayWithObject:sortDescriptor]];
NSLog(@"Sorted Array ==== %@", sortedArray);
0
的NSArray是不可變的如此排序數組您可以用排序的版本,像這樣的替換:
NSArray * myArray = SortArray(myArray);
// SortArray works like this.
// Helper function.
NSInteger MyComparisonFunction(id a, id b, void* context) {
NSNumber *aNum = (NSNumber*)a[@"id"];
NSNumber *bNum = (NSNumber*)b[@"id"];
return [aNum compare:bNum];
}
NSArray* SortArray (NSArray* unsorted) {
return [unsorted sortedArrayUsingFunction:MyComparisonFunction context:nil];
}
另一種方法是使用而不是一個NSMutableArray,然後進行排序,在一個類似的方式。
1
您可以使用-[NSArray sortedArrayUsingComparator:]
和比較塊輕鬆完成此操作。
比較塊需要返回NSComparisonResult
。幸運的是,與關鍵「id」相關聯的值是NSNumber
s,因此只需返回-[NSNumber compare:]
的結果即可。
// Example array containing three dictionaries with "id" keys
NSArray *unsortedArray = @[@{ @"id": @3 }, @{ @"id": @1 }, @{ @"id": @2 }];
NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1[@"id"] compare:obj2[@"id"]];
}];
相關問題
- 1. 基於列表排序詞典的值
- 2. 排序多個詞典的數組
- 3. 基於計數的字典排序
- 4. 基於數值的Javascript數組排序基於數值的數組排序
- 5. 詞典排序
- 6. 對基於字典唯一鍵的NSDictionaries數組排序
- 7. CoreData:基於使用IN的謂詞/數組進行排序
- 8. 排序ASP.NET詞典
- 9. 基於數字的排序數組
- 10. 基於字典中的鍵排序
- 11. 排序基於字典的鍵
- 12. 基於密鑰的字典排序
- 13. 排序基於字典的元素
- 14. F中的詞典排序#
- 15. 詞典/ KeyValuePair收集的基數排序實現
- 16. 排序基於密鑰的JSON數組
- 17. 基於三列的Java排序數組
- 18. 基於值的php數組排序器
- 19. 排序基於php數組的對象
- 20. 基於值的Tcl數組排序
- 21. 基於並行數組的python排序
- 22. Python排序詞典的大多數值
- 23. 子集的元組密鑰詞典與名字典基於鍵
- 24. 基於列排序2D整數數組
- 25. 基於鍵值排序數據數組
- 26. 詞典中的NSDates對字典排序
- 27. 基礎目標-c:帶數組的字典;用字典詞典
- 28. 基於詞典篩選數據表
- 29. 的Python:基於存在於詞典
- 30. 用於基於謂詞進行排序的庫函數