编辑tableView并删除文档文件

时间:2012-01-24 20:54:46

标签: iphone ios tableview nsfilemanager

我有一个带有4个viewController的tabBarController。 其中一个是TableViewController。 在tableView的viewDidLoad中,我使用了2个NSMutableArray

list = [[NSMutalbeArray alloc] init];
dates = [[NSMutalbeArray alloc] init];

在viewDidAppear中添加对象

NSError *error;
NSError *error1;
fileManager = [NSFileManager defaultManager];
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsPath = [paths objectAtIndex:0]; 
for (NSString *file in [fileManager contentsOfDirectoryAtPath:docsPath error:&error]) {
    fileFrom = [docsPath stringByAppendingPathComponent:file];
    NSDictionary* properties = [[NSFileManager defaultManager]
                                attributesOfItemAtPath:fileFrom
                                error:&error1];
    NSDate* modDate = [properties objectForKey:NSFileModificationDate];        
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
    [dateFormatter setLocale: [NSLocale currentLocale]];    
    [dateFormatter setDateStyle:kCFDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:kCFDateFormatterNoStyle];   
    NSString* dateString = [dateFormatter stringFromDate:modDate];
    BOOL isDir;
    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", docsPath, file] isDirectory:&isDir];
    if (exists && !isDir && ![file hasPrefix:@"."]) {
        [list addObject:file];
        [dates addObject:dateString];
    }
}
[[self tableView] reloadData];    

其中每个文件都是documentDirectory中的文件名,dateString是创建日期。

我可以在我的tableView中查看文件列表。

如果我编辑tableView并尝试删除它工作的元素,我可以从文件系统和tableView上删除该元素但是如果我将新文件添加到我的文档目录(就像应用程序一样)我收到一个EXE_BAD_ADDRESS < / p>

- (void)tableView:(UITableView *)tableView commitEditingStyle:    (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
    NSString *temp = [list objectAtIndex:indexPath.row];
    NSString *lastPath = [docsPath stringByAppendingPathComponent:temp];
    [fileManager removeItemAtPath:lastPath error:nil];
    [self.list removeObjectAtIndex:indexPath.row];
    [self.dates removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

        [self.tableView reloadData];
   }   
}

有任何建议吗?

0 个答案:

没有答案