2016-03-24 12 views
0

ich müde, dieses Problem zu lösen, aber wenn es entfernen es anderen Foto-Pfad entfernen, weil ich .lastPathComponent verwenden enter image description hereWie PrepareForDeletion verwenden, um Foto in CoreData Swift zu löschen?

override func prepareForDeletion() { 

    super.prepareForDeletion() 
    if filePath != nil { 

     let fileName = (filePath! as NSString).lastPathComponent 

     let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentationDirectory, .UserDomainMask, true)[0] 

     let pathArray = [dirPath, fileName] 

     let fileURL = NSURL.fileURLWithPathComponents(pathArray)! 

     do { 
      try NSFileManager.defaultManager().removeItemAtURL(fileURL) 
      try NSFileManager.defaultManager().removeItemAtPath(fileName) 
     } catch let error as NSError { 
      print("Error from prepareForDeletion - \(error)") 
     } 
    } else { 
     print("filepath is empty") 
    } 
} 

ich es bekam

die richtige filePath erkannt, dass die richtige Antwort ist

override func prepareForDeletion() { 
    super.prepareForDeletion() 

    if filePath != nil { 

    if let imagePath = self.filePath { 

    do { 
     try NSFileManager.defaultManager().removeItemAtPath(imagePath) 
    } catch let error as NSError { 
     print("Error from prepareForDeletion - \(error)") 
    } 
    } 
} else { 
print("filepath is empty") 
    } 
    } 

Antwort

0

Warum haben Sie zwei "Entfernen" -Anweisungen in der "Do" -Anweisung? Bitte entfernen Sie die Zeile

try NSFileManager.defaultManager().removeItemAtPath(fileName 

und prüfen Sie, ob der Fehler weiterhin besteht.

+0

i entfernen es i hinzugefügt wurde, als ich –

0

Speichern Sie den Dateipfad nicht in der Datenbank, sondern speichern Sie den Dateinamen in der Datenbank und erstellen Sie dann den Pfad in der Funktion zum Löschen. probiere diese Methode aus.

override func prepareForDeletion() { 

     super.prepareForDeletion() 
     if filename != nil { 
    let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentationDirectory, .UserDomainMask, true)[0] 

     let pathArray = [dirPath, filename] 

     let fileURL = NSURL.fileURLWithPathComponents(pathArray)! 

     do { 
      try NSFileManager.defaultManager().removeItemAtURL(fileURL) 
     } catch let error as NSError { 
     print("Error from prepareForDeletion - \(error)") 
     } 
     } else { 
       print("filepath is empty") 
     } 

}

+0

zu Antwort zu bekommen war versuchen, es ist filePath wie es –

+0

filePath zu tun, ist es eine Eigenschaft von Klasse Foto –

+0

Dateipfad sollte nicht speichern sein in Datenbank. Was Sie tun müssen, ist, speichern Sie den Dateinamen in die Dateipfad-Eigenschaft. weil Sie nicht beabsichtigen, den Namen der Immobilie zu ändern. dann call shared function – Saood

Verwandte Themen