2011-06-11 8 views

Trả lời

128

Có ví dụ làm việc của Apple sau, sử dụng sortedArrayUsingSelector:localizedCaseInsensitiveCompare: trong Collections Documentation:

sortedArray = [anArray sortedArrayUsingSelector: 
         @selector(localizedCaseInsensitiveCompare:)]; 

Lưu ý rằng điều này sẽ trả về một mảng được sắp xếp mới. Nếu bạn muốn sắp xếp NSMutableArray của bạn tại chỗ, sau đó sử dụng sortUsingSelector: thay vào đó, như vậy:

[mutableArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
8

Dưới đây là một câu trả lời được cập nhật cho Swift:

  • Sorting có thể được thực hiện trong Swift với sự giúp đỡ của bao đóng. Có hai phương pháp - sortsorted tạo điều kiện thuận lợi cho việc này.

    var unsortedArray = [ "H", "ello", "Wo", "rl", "d"] 
    var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } 
    

    Lưu ý: Tại đây sorted sẽ trả về một mảng được sắp xếp. Bản thân số unsortedArray sẽ không được sắp xếp.

  • Nếu bạn muốn sắp xếp unsortedArray bản thân, sử dụng

    unsortedArray.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } 
    


tham khảo này:

  • Here là tài liệu cho các phương pháp sắp xếp của Swift.

  • Tài liệu cho các phương thức so sánh khác nhau Stringhere.


Tùy chọn:

Thay vì sử dụng localizedCaseInsensitiveCompare, điều này cũng có thể được thực hiện:

stringArray.sort{ $0.lowercaseString < $1.lowercaseString } 

hoặc thậm chí

stringArray.sort{ $0 < $1 } 

i f bạn muốn có một trường hợp so sánh nhạy cảm

+0

Cảm ơn, '.lowercaseString' đã thực hiện công việc cho tôi khi so sánh các đối tượng có tiêu đề. 'mediaItems = mediaItems.sorted {$ 0.media.title.lowercaseString> $ 1.media.title.lowercaseString}' –

0

Đối với tôi đây làm việc ....

areas = [areas sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

đây khu vực này là NSArray. Tôi hi vọng nó giúp ích cho ai đó.

1

Thật dễ dàng để có được thứ tự tăng dần.Thực hiện theo các bước dưới đây ,,,

Mẫu 1:

NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]]; 

nếu bạn muốn sắp xếp để được trường hợp nhạy cảm, bạn sẽ cần phải thiết lập các mô tả như thế này ,,
Mô hình 2:

NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];