我有一个NSMutableArray
从iOS中的文档目录中检索文件。
我使用以下代码从文档目录中检索文件。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError * error;
self.array = [[NSMutableArray alloc] init];
self.array = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
然后我在UITableView
中显示文件列表。
但它以字母顺序显示。
我希望将其显示为按文件的创建日期排序。
修改
我在这里写ViewWillAppear
。
- (void)viewWillAppear:(BOOL)animated
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError * error;
self.array = [[NSMutableArray alloc] init];
self.array = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
[self loadData];
}
- (void) loadData
{
self.sortedFileList = [self.array mutableCopy];
[self.sortedFileList sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate* d1 = [[NSFileManager defaultManager] attributesOfFileSystemForPath:obj1 error:nil][@"fileCreationDate"];
NSDate* d2 = [[NSFileManager defaultManager] attributesOfFileSystemForPath:obj2 error:nil][@"fileCreationDate"];
return [d1 compare:d2];
}];
}
并没有按日期排序。
我该怎么做?
感谢您的任何建议和帮助。
答案 0 :(得分:3)
您需要我们NSFileManager
获取每个文件的属性(attributesOfItemAtPath:error:
)。这将返回文件的字典,您可以使用fileCreationDate
获取创建日期。然后你可以进行排序。
答案 1 :(得分:3)
您可以做的一件事是将FileNames
作为Key
存储,CreationDate
作为Value
存储在某些NSDictionary
中,然后您就可以使用..
myArray = [myDict keysSortedByValueUsingComparator: ^NSComparisonResult(id obj1, id obj2){
return [[obj2 date] compare:[obj1 date]];
}];
答案 2 :(得分:2)
一种方法是在可变数组上使用sortUsingComparator:
方法,例如(伪代码):
@property (nonatomic,retain) NSMutableArray* sortedFileList;
....
// Make sure to call this method *once* (i.e. from your VC when loading view).
- (void) loadData {
self.sortedFileList = [self.array mutableCopy];
[a sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate* d1 = [[NSFileManager defaultManager] attributesOfItemAtPath:obj1 error:nil][@"fileCreationDate"];
NSDate* d2 = [[NSFileManager defaultManager] attributesOfItemAtPath:obj2 error:nil][@"fileCreationDate"];
return [d1 compare:d2];
}];
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.sortedFileList.count;
}
- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = // dequeue cell or create one
cell.textLabel.text = [[[NSString stringWithFormat:@"%@",[self.sortedFileList objectAtIndex:indexPath.row]] lastPathComponent] stringByDeletingPathExtension];
}