从文档目录中读取文件时的排序

时间:2011-12-05 12:54:08

标签: iphone objective-c

我目前正在阅读应用文档目录中的文件列表。

NSString* documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
NSError* error = nil;
NSMutableArray  *myArray = (NSMutableArray*)[[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirectory error:&error]retain];

但是在显示我要显示的文件列表之前,所有文件都应该正确排序。

我该怎么做?

4 个答案:

答案 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]];