我正在尝试从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]);
}
}
有人可以帮我弄清楚如何从阵列中删除单个文件吗?
谢谢!
答案 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);
...