2012-06-20 31 views
22

Tôi đang sắp xếp một NSMutableArray như sau:NSMutableArray phân loại - case insensitive

NSSortDescriptor *sortDescriptor; 
    sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:str_key ascending:bool_asc_desc] autorelease]; 
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
    NSArray *sortedArray; 
    sortedArray = [ads_printers_array sortedArrayUsingDescriptors:sortDescriptors]; 

Vấn đề là đây là trường hợp nhạy cảm, và tôi muốn làm cho nó phân biệt dạng chữ. Làm thế nào tôi có thể làm điều đó? Tôi đã thử đọc các tài liệu và tìm thấy một số thông tin như sau:

sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:str_key ascending:bool_asc_desc selector: @selector(caseInsensitiveCompare)] autorelease]; 

Tuy nhiên, tôi không biết mình nên đưa vào đối số bộ chọn. Cảm ơn!

+1

thể trùng lặp của [Tôi muốn sắp xếp một mảng sử dụng NSSortDescriptor] (http://stackoverflow.com/questions/5542762/i- muốn-to-sort-an-array-sử dụng-nssortdescriptor) –

+0

Thanh toán sau bài đăng: http://stackoverflow.com/a/5542888/200272 –

+1

Cảm ơn bạn, cho bất cứ ai quan tâm đến phương pháp chọn mà tôi đã sử dụng là (localizedCaseInsensitiveCompare :) . Chúc mừng! – Kevin

Trả lời

39
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:str_key 
    ascending:YES selector:@selector(caseInsensitiveCompare:)]; 

ads_printers_array = [ads_printers_array sortedArrayUsingDescriptors:[NSArray 
    arrayWithObject:sortDescriptor]]; 
+0

Giải pháp này làm việc cho tôi –

0

Đối với Swift, làm như sau:

let sortDescriptor = NSSortDescriptor(key: sortDescriptorKey, ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))

Các vấn đề liên quan