2016-07-22 129 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

相关问题