1

我有一个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];
    }];

}

而且它不按日期排序。

我怎样才能做到这一点?

感谢您的任何建议和帮助。

4

3 回答 3

3

您需要我们NSFileManager获取每个文件的属性 ( attributesOfItemAtPath:error:)。这将返回文件的字典,您可以使用fileCreationDate. 然后你可以执行你的排序。

于 2013-06-24T14:25:37.897 回答
3

您可以做的一件事是将FileNamesaKeyCreationDatea存储Value在 some 中NSDictionary,然后您可以使用 ...

myArray = [myDict keysSortedByValueUsingComparator: ^NSComparisonResult(id obj1, id obj2){
                  return [[obj2 date] compare:[obj1 date]];
          }];
于 2013-06-24T14:36:54.527 回答
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];
}
于 2013-06-24T14:32:36.073 回答