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

Posted

技术标签:

【中文标题】使用文件名和 NSDateString 显示唯一的文件名作为 TableView 标题(需要帮助)【英文标题】:Displaying unique file name with File name and NSDateString as TableView titles (need help) 【发布时间】:2017-04-05 05:03:17 【问题描述】:

在我的 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 ++;

我还想重新排列代码,使文件“编号”位于“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 类来做到这一点,该类可以由主视图控制器和详细视图控制器调用(或使用) 同时,但是我还没有成功地尝试过这种方法。

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

最后,我在论坛上搜索了很长时间以找到解决此问题的简明解决方案,但目前还没有找到解决方法。

非常感谢。

【问题讨论】:

【参考方案1】:

当我看到您的代码时,日期字符串似乎返回 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);

谢谢你..

【讨论】:

@Somme。回到您之前提交的内容。我在示例中一起破解的 NSDate 格式化程序实际上返回了一个日期字符串。也就是说,当它位于 Mainviewcontroller 和音频文件创建类的范围内时。但是,当我将它从这个 Main 文件中移出并使其成为一个单独的 NSDate 类时,我在调用它时遇到了麻烦。 所以,现在它位于这个视图控制器中只是为了执行服务。我的主要问题是我需要解析文件名的字符串(用唯一的文件序列号和格式化日期保存),并在表格视图单元格中将其表示为主标题和详细文本副标题,显示格式化日期。 (查看我上面的图片链接以显示它需要如何工作)同样,如果可以成功创建所有 Viewcontroller 都可以调用的 NSDate 类/文件,这甚至可能会给我一些成功。 (n我希望这篇文章不会太含糊)任何反馈表示赞赏

以上是关于使用文件名和 NSDateString 显示唯一的文件名作为 TableView 标题(需要帮助)的主要内容,如果未能解决你的问题,请参考以下文章

使用哪个 Web 框架或库在每个图像具有唯一 url 的网页上显示 PNG 图像和基本形状?

将一对多关系显示为 2 列 - 1 个唯一行(ID 和逗号分隔列表)

加入两个表,只显示唯一值和最大日期

Access 2010 中 1:M Join 的左表中仅显示唯一记录

需要html帮助在一个唯一的选定ID下显示多行

Disqus 在设置了唯一 page.url 和 page.id 的所有页面上显示相同的评论