Tôi có một mảng đối tượng bao gồm hai thuộc tính: NSString
và BOOL
. Tôi muốn sắp xếp mảng này sao cho tất cả các số BOOL
s là YES
xuất hiện trước tất cả các bool là NO
. Sau đó, tôi muốn cho danh sách các đối tượng có BOOL YES
để bảng chữ cái và tôi cũng muốn cho các đối tượng với NO
để được sắp xếp theo thứ tự bảng chữ cái. Có một số loại thư viện có thể thực hiện điều này trong mục tiêu c? Nếu không phải là cách hiệu quả nhất để làm điều này là gì?Sắp xếp mảng dựa trên hai tham số
7
A
Trả lời
20
Bạn có thể sử dụng NSSortDescriptor
s để thực hiện phân loại:
// Set ascending:NO so that "YES" would appear ahead of "NO"
NSSortDescriptor *boolDescr = [[NSSortDescriptor alloc] initWithKey:@"boolField" ascending:NO];
// String are alphabetized in ascending order
NSSortDescriptor *strDescr = [[NSSortDescriptor alloc] initWithKey:@"strField" ascending:YES];
// Combine the two
NSArray *sortDescriptors = @[boolDescr, strDescr];
// Sort your array
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors];
Bạn có thể đọc thêm về sắp xếp với mô tả here.
1
Tra cứu NSSortDescriptors. Tạo hai, một cho chuỗi, một cho bool. Sau đó thêm cả hai vào một mảng. Sau đó sử dụng phương thức NSArray sortArrayWiyhDescriptors.
3
Một thay thế cho việc sử dụng mô tả loại là sử dụng một NSComparator
:
NSArray *myObjects = ... // your array of "Foo" objects
NSArray *sortedArray = [myObjects sortedArrayUsingComparator:^(Foo *obj1, Foo *obj2) {
if ((obj1.boolProp && obj2.boolProp) || (!obj1.boolProp && !obj2.boolProp)) {
// Both bools are either YES or both are NO so sort by the string property
return [obj1.stringProp compare:obj2.stringProp];
} else if (obj1.boolProp) {
// first is YES, second is NO
return NSOrderedAscending;
} else {
// second is YES, first is NO
return NSOrderedDescending;
}
)];
Xin lưu ý rằng tôi có thể có cuối cùng hai lạc hậu. Nếu điều này sắp xếp giá trị Không trước giá trị Có thì hãy trao đổi hai giá trị trả về cuối cùng.
Các vấn đề liên quan
- 1. Sắp xếp một mảng hai chiều dựa trên một cột
- 2. Mảng PHP sắp xếp dựa trên một mảng khác?
- 3. Sắp xếp mảng 2D Integer dựa trên một cột
- 4. sắp xếp mảng số()
- 5. Sắp xếp một mảng dựa trên bảng chữ cái?
- 6. Sắp xếp dựa trên các mảng liên kết trong D
- 7. Sắp xếp mảng dựa trên đối tượng thuộc tính - Javascript
- 8. Cách sắp xếp LI dựa trên ID số
- 9. Sắp xếp hai mảng tương ứng
- 10. vectơ sắp xếp dựa trên kích thước()
- 11. Cách sắp xếp dựa trên phụ thuộc?
- 12. sắp xếp mảng bên ngoài dựa trên giá trị trong mảng bên trong, javascript
- 13. Sắp xếp một mảng bằng các phím dựa trên một mảng khác?
- 14. Sắp xếp mảng hai chiều theo giá trị thứ hai
- 15. Sắp xếp một dãy số dựa trên một thứ tự nhất định
- 16. Danh sách sắp xếp dựa trên danh sách khác
- 17. Làm cách nào để sắp xếp lại mảng này trong Javascript dựa trên một mảng khác?
- 18. Sắp xếp một mảng dựa trên các thành viên của mảng khác trong C++
- 19. VBScript tạo một mảng trong hàm dựa trên tham số
- 20. gần nhất cặp tiền trong hai mảng được sắp xếp
- 21. tái sắp xếp php mảng
- 22. Sắp xếp mảng cho hai bộ so sánh?
- 23. Python: cách sắp xếp mảng ma trận theo hai trường?
- 24. Thuật toán sắp xếp cho một vấn đề sắp xếp dựa trên không so sánh?
- 25. Sorting: Sắp xếp mảng dựa trên nhiều điều kiện trong Ruby
- 26. mảng sắp xếp ruby của mảng
- 27. Mảng xếp chồng kép PHP dựa trên chuỗi con
- 28. Giao điểm của hai mảng được sắp xếp
- 29. Sắp xếp mảng đối tượng theo hai tiêu chí?
- 30. Sắp xếp tệp phân cách tab dựa trên lệnh sắp xếp cột bash