1

iOS のドキュメント ディレクトリからファイルをNSMutableArray取得しました。

次のコードを使用して、ドキュメントディレクトリからファイルを取得しました。

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

できることの 1 つは、 として保存しFileNames、一部にとして保存してから、... を使用することです。KeyCreationDateValueNSDictionary

myArray = [myDict keysSortedByValueUsingComparator: ^NSComparisonResult(id obj1, id obj2){
                  return [[obj2 date] compare:[obj1 date]];
          }];
于 2013-06-24T14:36:54.527 に答える
2

sortUsingComparator:1 つの方法は、変更可能な配列でメソッドを使用することです。たとえば (疑似コード):

@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 に答える