2017-01-10 11 views
3

Я выполняю этот код, чтобы удалить данные из UITableViewSwift - Удалить ячейки из UITableView

var recordedAudioFilesURLArray = [URL]() 
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     return true 
    } 

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
     if editingStyle == .delete { 
      recordedAudioFilesURLArray.remove(at: indexPath.row) 
      self.tableView.reloadData() 
     } 
    } 

Когда я пальцем влево к конкретной ячейке, клетки удалить из UITableView. Замечательно. Но когда я закрываю приложение и снова перезапускаю свое приложение, появляются удаленные ячейки. Аудиофайлы хранятся в каталоге документов.

+1

Этот код элемент из массива, но вы должны также удалить файл или любой другой используется для загрузки данных * в * массив, когда ваше приложение начинает – Paulw11

+1

Затем вам необходимо также удалить этот файл каталог документов. –

+1

Вам также нужно удалить этот файл из каталога документов, так как вы хотите удалить элемент из массива, но не удалять фактический файл. Если вы снова заполняете данные, он снова загружает все данные. –

ответ

3

Используйте этот массив URL, чтобы удалить файл из DocumentDirectory, затем удалите объект с Array.

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 

     //First remove file from DocumentDirectory 
     try? FileManager.default.removeItem(at: recordedAudioFilesURLArray[indexPath.row]) 

     //Remove object from array 
     recordedAudioFilesURLArray.remove(at: indexPath.row) 

     //Reload tableView 
     self.tableView.reloadData() 
    } 
} 
+0

спасибо ... это работает :) –

+0

@ pigeon_39 Приветствую вас! –

0
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     recordedAudioFilesURLArray.remove(at: indexPath.row) 
     self. clearAllFilesFromTempDirectory(indexPath.row); 
     self.tableView.reloadData() 
    } 
} 

func clearAllFilesFromTempDirectory()->fullPath 
{ 

     if fileManager.removeItemAtPath(fullPath, error: error) == false 
     { 
      println("delete successfully") 
     } 


    else 
     { 
     println("Could not retrieve directory: \(error)") 
     } 
}