2016-07-22 121 views
0

我在nsdocumentdirectory一些文件,當我拿來那些提交其收益與隨機position.I文件正在使用此下面的代碼:如何從nsdocumentdirectory按其名稱對文件進行排序?

NSString *downloadDirectory = [Utility bookDownloadFolder]; 
NSString *bookFolder = [[_selectedBook.zipFile lastPathComponent] stringByDeletingPathExtension]; 
NSString *bookFolderFinal = [downloadDirectory stringByAppendingPathComponent:bookFolder]; 
NSMutableArray *retval = [NSMutableArray array]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error = nil; 
NSArray *files = [fileManager contentsOfDirectoryAtPath:bookFolderFinal error:&error]; 

和輸出是這樣的:

文件(」 1.JPG 「 」1.txt的「, 」10.JPG「, 」10.txt「 」11.JPG「, 」11.txt「, 」12.JPG「, 」12.txt「,」 13.jpg 「,」13.txt「,」2.jpg「,」2.txt「,」3.jpg「,」3.txt「,」4.jpg「,」4.txt「,」5.jpg「, 「5.txt」,「6.jpg」,「6.txt」,「7.jpg」,「7.txt」,「__MACOSX」 )

但我想輸出的升序像:files 「1.JPG」, 「1.txt的」, 「2.JPG」,「2 (「__MACOSX」,「1.jpg」,)

如果我使用localizedCaseInsensitiveCompare排序數組,它在這種情況下不起作用,如果我使用localizedCaseInsensitiveCompare,那麼輸出只是這樣。 1.txt,10.jpg,10.txt,11.jpg,11.txt,12.jpg,12.txt,13.jpg,13。 txt「,」2.jpg「,」2.txt「,」3.jpg「,」3.txt「,」4.jpg「,」4.txt「,」5.jpg「,)

+0

的可能的複製[如何在NSArray中按字母順序排序?(http://stackoverflow.com/questions/1351182/how-to-sort-a-nsarray-alphabetically) – Droppy

+0

沒有localizedCaseInsensitiveCompare沒有在這種情況下工作, (「__MACOSX」, 「1.jpg」, 「1.txt」, 「10.jpg」, 「10.txt」, 「11.jpg」,如果我使用localizedCaseInsensitiveCompare, 」, 「11.txt」, 「12.JPG」, 「12.txt」, 「13.jpg」, 「13.txt」, 「2.JPG」, 「2.txt」 , 「3.jpg」, 「3.txt」, 「4.jpg」, 「4.txt」, 「5.jpg」, ) –

+1

You want [this one](http://stackoverflow.com/questions/11075644/sort-nsmutablearray -with-strings-that-c​​ontain-numbers)。但是,你需要打定主意;你想要數字還是不是? – Droppy

回答

1
[NSSortDescriptor sortDescriptorWithKey:@"self" 
ascending:YEScomparator:^(NSString * string1, NSString * string2){ 
return [string1 compare:string2 options:NSNumericSearch]; 
}]; 
0

夫特示例來解決問題的youre:

let testArray = ["1.jpg","1.txt","10.jpg","10.txt","11.jpg","11.txt","12.jpg","12.txt","13.jpg","13.txt","2.jpg","2.txt", "3.jpg","3.txt","4.jpg","4.txt","5.jpg","5.txt","6.jpg","6.txt", "7.jpg","7.txt"] 

let sortedArray = testArray.sort({ x, y in 
    return x.localizedStandardCompare(y) == NSComparisonResult.OrderedAscending 
}) 


print(sortedArray) 
//"["1.jpg", "1.txt", "2.jpg", "2.txt", "3.jpg", "3.txt", "4.jpg", "4.txt", "5.jpg", "5.txt", "6.jpg", "6.txt", "7.jpg", "7.txt", "10.jpg", "10.txt", "11.jpg", "11.txt", "12.jpg", "12.txt", "13.jpg", "13.txt"] 
+1

感謝Oleg,這將有所幫助.. –

0

的NSMutableArray * myArray的= [NSMutableArray的arrayWithObjects:@ 「4」, @「2」,@「7」,@「8」,nil]; //排序[myArray sortUsingComparator:^ NSComparisonResult(NSString * str1,NSString * str2){return [str1 compare:str2 options:(NSNumericSearch)]; }]; //記錄NSLog(@「%@」,myArray);

+0

爲什麼你張貼多個答案? – Droppy

相關問題