我目前正在阅读应用文档目录中的文件列表。
NSString* documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSError* error = nil;
NSMutableArray *myArray = (NSMutableArray*)[[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirectory error:&error]retain];
但是在显示我要显示的文件列表之前,所有文件都应该正确排序。
我该怎么做?
答案 0 :(得分:1)
你的myArray将是一系列NSStrings。由于它们都在同一目录中,因此您可以按如下方式对其进行排序:
NSArray * sortedArray =
[myArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
现在请务必注意contentsOfDirectoryAtPath:documentDirectory error:&error
返回目录和文件。所以在获取排序数组之前,如果你只想要文件,
NSMutableArray *tempArray=[[NSMutableArray alloc] init];
for(NSString *str in myArray)
{
if([[NSFileManager defaultManager] fileExistsAtPath:str]
[tempArray addObject:str];
}
现在对这个tempArray而不是myArray进行排序,你就完成了
答案 1 :(得分:0)
在阵列上使用NSSortDescriptor并枚举。 This是一个了解如何进行详细了解的好地方。
答案 2 :(得分:0)
对于NSMutableArray
,只需将sortUsingSelector
与内置扇区compare:
一起使用即可。
例如:
[myArray sortUsingSelector:@selector(compare:)];
答案 3 :(得分:0)
可以对阵列进行排序。
NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES selector:@selector(localizedCompare:)];// for descending sort you can set the parameter ascending to NO.
NSArray* sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];