显示带有文件名和 NSDateString 的唯一文件名作为 TableView 标题(需要帮助)

Displaying unique file name with File name and NSDateString as TableView titles (need help)

在我的iOS 应用程序项目中,我创建了记录的audio.caf 文件保存在文档目录文件结构中,然后将其显示为一个数组,列在TableView 的连续TableViewCells 中。 我想显示作为标题创建的文件的唯一“音频文件名”和“NSDate” 和副标题连续,在每个单元格内。 用于在给定路径创建录制文件的代码位于 Mainviewcontroller 中。

    NSArray *pathComponents = [NSArray arrayWithObjects:
                                   [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                                   _filePath,
                                   nil];
        newURL = [NSURL fileURLWithPathComponents: pathComponents];
        _filePath = [documentsDirectory stringByAppendingPathComponent:@"audio %@ %@.caf"];
        // Initiate and prepare the recorder
        //NSInteger count = 0;
// To create the date string <---
        NSString *dateString;
        NSDate *aDate = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        dateString = [dateFormatter stringFromDate:aDate];
        NSLog(@"datestring %@",dateString);


        int count = 0;
        int arrayCount = [audioFileArray count];



            documentsDirectory = [pathComponents objectAtIndex:0];

            NSError *error = nil;
// To create the recorded file name and date combined <---
            _audioFileArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
            filename = [NSString stringWithFormat:@"audio %@ %@.caf", dateString,[NSNumber numberWithFloat:[_audioFileArray count]]];
                    count ++;

我还想 re-arrange 代码,以便文件 "number" 出现在 "NSDate" 之前,但这是它工作的唯一方式,即; _audioFileArray 计数位之前的 DateString!

并且,在 UITableView fileViewController 中,显示文件名文本的位是:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *simpleTableIdentifier = @"simpleTableItem";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:simpleTableIdentifier];
}
NSString *name = [_filteredArray objectAtIndex:indexPath.row];
//add the text display that is drawn from the array list
cell.textLabel.text = name;
cell.textLabel.text = [_filteredArray objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ is the recorded date", name];
return cell

显示在 UITableViewCells 中的数组标题如图所示。

Table view cells comparison

我想要做的是删除每个单元格中标题的日期(创建)部分,并将其重新定位到 detailtextLabel 标题中。 我可以通过创建一个单独的 NSDate class 来做到这一点,主视图控制器和详细视图控制器可以调用(或使用) 同时,但我还没有成功尝试这种方法。

例如,如果使用 JSON 或 plist 为每个保存的文件属性创建一个字典,这样会更好吗? 任何对此的帮助将不胜感激,如果 post 需要更清楚的说明,也请告诉我。

最后,我在论坛上广泛搜索了这个问题的简洁解决方案,但至今仍未找到解决方法。

非常感谢。

正如我看到你的代码,日期字符串 return 似乎是 nil 或空值。 替换您的代码:

NSString *dateString;
NSDate *aDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
dateString = [dateFormatter stringFromDate:aDate];
NSLog(@"datestring %@",dateString);

使用此代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy"];
NSDate *currentDate = [NSDate date];
NSString *dateString = [formatter stringFromDate:currentDate];
NSLog(@"datestring %@",dateString);

谢谢..