2017-02-04 4 views
0
let filename = getDocumentsDirectory().appendingPathComponent(upload.fileName) 
       print("deleting") 
      let fileNameToDelete = upload.fileName 
      var filePath = ""   
      // Fine documents directory on device 
      let dirs : [String] = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.allDomainsMask, true)   
      if dirs.count > 0 { 
       let dir = dirs[0] //documents directory 
       filePath = dir.appendingFormat("/" + fileNameToDelete) 
       print("Local path = \(filePath)")  
      } else { 
       print("Could not find local directory to store file") 
       return 
      }   
      print(filename)   
       print("deleting111111") 
      do { 
       let fileManager = FileManager.default 
       // Check if file exists 
       print("filePath") 
       print(filePath) 
       print("filePath") 
       if fileManager.fileExists(atPath: filePath) { 
        // Delete file 
        try fileManager.removeItem(atPath: filePath) 
       } else { 
        print("File does not exist") 
       }    
      } 
      catch let error as NSError { 
       print("An error took place: \(error)") 
      }} 

Это печатается ниже. Почему удаление не работает? Почему выше функции метания мне на файл существует, он не существуетБыстрое удаление файла изображения, файл броска не существует

deleting 
Local path = /var/mobile/Containers/Data/Application/C763B3ED-3371-47AB-8F61-4F086D01E430/Documents/profile-FFCEBEA9-2F8D-49E2-9A09-2BF87BD0B542--A9636AF4-350D-4D72-A4BD-E4F2B183F4BB.png 
file:///var/mobile/Containers/Data/Application/C763B3ED-3371-47AB-8F61-4F086D01E430/Documents/profile-FFCEBEA9-2F8D-49E2-9A09-2BF87BD0B542--A9636AF4-350D-4D72-A4BD-E4F2B183F4BB.png 
deleting111111 
filePath 
/var/mobile/Containers/Data/Application/C763B3ED-3371-47AB-8F61-4F086D01E430/Documents/profile-FFCEBEA9-2F8D-49E2-9A09-2BF87BD0B542--A9636AF4-350D-4D72-A4BD-E4F2B183F4BB.png 
filePath 
File does not exist 
+0

D o s s файл существует? – vadian

+0

он должен, потому что я сохраняю его, используя это ниже. –

+0

func getDocumentsDirectory() -> URL { let paths = FileManager.default.urls (для: .documentDirectory, в: .userDomainMask) let documentsDirectory = paths [0] return documentsDirectory } –

ответ

0

Если вы создали файл, написав имя файла генерируется с

filename = getDocumentsDirectory().appendingPathComponent(nameOfImage+"‌​.PNG") 

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

Действительно, в коде вы показали, вы генерировать переменную filename с кодом, который выглядит примерно так:

let filename = getDocumentsDirectory().appendingPathComponent(upload.fileName) 

... но тогда вы никогда не использованиеfilename для чего-нибудь! Таким образом, вы постоянно себя чувствуете. Вы создаете filename, вы печатаете filename, но вы не используете filename как путь к удалению. Вы используете другую переменную, filePath, полученную по-другому.

+0

Кроме того, 'dir.appendingFormat ("/"+ fileNameToDelete)' является ужасный способ работы с файловым путем. – matt

+0

На мой взгляд, было бы гораздо лучше использовать URL-адреса файлов и полностью работать с методами URL. Получить каталог документов с помощью этого метода: https://developer.apple.com/reference/foundation/filemanager/1407693-url и работать целиком оттуда. String filepaths - это работа дьявола; поэтому предпочтительны URL-адреса. – matt

Смежные вопросы