删除路径,而不是整个数组

时间:2012-01-21 03:55:41

标签: objective-c ios cocoa-touch ipad

我正在尝试从Apple的示例代码DirectoryWatcher和DITableViewController填充的tableview中删除文件。这是我的代码,我似乎是删除整个数组而不是单个文件。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    // If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        NSInteger row = [indexPath row];
        [documentURLs removeObjectAtIndex:row];      
    }

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                     withRowAnimation:UITableViewRowAnimationFade];


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *pathToDocumentsDirectory = [paths objectAtIndex:0];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    BOOL fileExists = [fileManager fileExistsAtPath:pathToDocumentsDirectory];
    NSLog(@"Path to file: %@", pathToDocumentsDirectory);        
    NSLog(@"File exists: %d", fileExists);
    NSLog(@"Is deletable file at path: %d", [fileManager isDeletableFileAtPath:pathToDocumentsDirectory]);
    if (fileExists) 
    {
        BOOL success = [fileManager removeItemAtPath:pathToDocumentsDirectory
                                               error:&error];
        if (!success) 
            NSLog(@"Error: %@", [error localizedDescription]);
    }
}

有人可以帮我弄清楚如何从阵列中删除单个文件吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码尝试删除应用的文档目录。

您需要从documentURLs数组中提取网址并将其传递给-[NSFileManager removeItemAtPath:]。例如:

NSURL *urlToDelete = nil;
if (editingStyle == UITableViewCellEditingStyleDelete) {
    NSInteger row = [indexPath row];
    urlToDelete = [documentURLs objectAtIndex:row];
    [documentURLs removeObjectAtIndex:row];      
}

...
if (urlToDelete) {
    BOOL success = [fileManager removeItemAtPath:urlToDelete error:&error);
    ...