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

时间:2017-04-05 05:03:17

标签: ios objective-c uitableview nsarray

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

我还想重新安排代码,以便文件&#34; number&#34;来自&#34; NSDate&#34;,但这是它工作的唯一方式,即; _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 个答案:

答案 0 :(得分:0)

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

谢谢..