Удалить путь, а не весь массив - PullRequest
0 голосов
/ 21 января 2012

Я пытаюсь удалить файл из таблицы, заполненный образцом кода Apple DirectoryWatcher и DITableViewController.Вот мой код, я, кажется, удаляю весь массив, а не отдельный файл.

- (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 голосов
/ 21 января 2012

Ваш код пытается удалить каталог документов приложения.

Вам нужно извлечь URL из массива 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);
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...