Я боролся с этим в течение некоторого времени, поэтому любые подсказки или предложения приветствуются.
Я пытаюсь удалить файл из каталога в разделе «Документы». Проблема в том, что файл не удаляется на устройстве, а на симуляторе.
Просто чтобы добавить к тайне, перед вызовом removeItemAtPath я проверяю, существует ли файл с fileExistsAtPath, и даже отображаю список файлов в этой папке.
Прикрепленный код для удаления:
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete file
NSString *directory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Documents/MyDir"];
NSString *path = [directory stringByAppendingPathComponent:[mListOfItems objectAtIndex:indexPath.row]];
NSError *error = nil;
// Check if FileName doesn't exist.
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"File Deletion Failed" message:[NSString stringWithFormat:@"File %@ not found.", [mListOfItems objectAtIndex:indexPath.row]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
}
else {
FAILED HERE ---V
if (![fileManager removeItemAtPath:path error:&error]) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error While Deleting File" message:[NSString stringWithFormat:@"%@", error] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
}
else {
// delete row from local data
[self.tableView beginUpdates];
[mListOfItems removeObjectAtIndex:indexPath.row];
// Delete the row from view
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
}// Delete - success
}// File Exist
}// Edit - Delete
}
Код, отображающий список файлов в этой папке ...
- (void) handleFilesRowTapped
{
// Get list of files to be displayed
NSFileManager *manager = [NSFileManager defaultManager];
NSError *error = nil;
NSString * directory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Documents/MyDir"];
NSArray *fileList = [manager contentsOfDirectoryAtPath:directory error:&error];
// Allocate file list view controller
FileListViewController *fileListViewController = [[FileListViewController alloc] initWithNibName:@"FileListViewController" bundle:nil];
//// Make sure that only *.TXT files are displayed
// Set the list to be displayed
fileListViewController.mListOfItems = [[NSMutableArray alloc] init];
for (NSString *fileName in fileList) {
if (([[fileName substringWithRange:NSMakeRange([fileName length] - 4, 4)] compare:@".txt"] == NSOrderedSame) ||
([[fileName substringWithRange:NSMakeRange([fileName length] - 4, 4)] compare:@".TXT"] == NSOrderedSame)){
[fileListViewController.mListOfItems addObject:fileName];
}
}
// Configure viwe controller
[fileListViewController setTitle:@"Files"];
// Push for display
[self.navigationController pushViewController:fileListViewController animated:YES];
[fileListViewController release];
}
Большое спасибо.