Ich lade eine Datei mit NSURLSessionDownloadTask, die gut funktioniert. Wie bekomme ich meine Bild- oder Videodatei in ein temporäres Verzeichnis. Aber ich muss es in eine permanente URL verschieben, um es in die Fotobibliothek zu bringen. Ich verwende NSFileManager
's copyItemAtURL:
ohne Erfolg. Irgendein Grund würde es werfen? Vielleicht ist der Dateityp nicht mit dem Dokumentenverzeichnis kompatibel?Das Kopieren der Datei von der temporären URL in das Dokumentenverzeichnis wird immer ausgelöst. NSURLSessionDownloadTask
let directory : String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
if let fileName = self.file.zOrigFileName {
let destinationPath = self.directory.stringByAppendingString("/\(fileName)")
if let destinationURL = NSURL(string: destinationPath) {
let fileManager = NSFileManager.defaultManager()
//IF file with same name exists delete it before copying new file
if fileAlreadyExistsAtURL(destinationURL) {
do {
try fileManager.removeItemAtURL(destinationURL)
} catch {
print("Error Removing Item At \(destinationURL.path)")
}
}
do {
try fileManager.copyItemAtURL(location, toURL: destinationURL)
self.saveURLToPhotosLibrary(destinationURL)
} catch {
//This is line always printing. my try statement always throwing.
print("Error Copying Item from \(location.path) to \(destinationURL.path)")
}
}
}
}
Hier ist die Druckaussage. Aus Sicherheitsgründen ich ersetzen App Bundle-ID aus Dokumenten Verzeichnis mit $(AppId)
Fehler beim Kopieren der Artikel aus Optional ("/ private/var/mobile/Behälter/Daten/Anwendung/E8D9C365-15D2-40BD-B0B5-A000BEDA9F00/Library/Caches/com.apple.nsurssessiond/Downloads/$ (AppID) /CFNetworkDownload_CK3G3Z.tmp ") zu Optional ("/var/mobile/Container/Daten/Anwendung/E8D9C365-15D2-40BD-B0B5-A000BEDA9F00/Dokumente/shortMovie.mov ")
Sie sollten NSURL fileURLWithPath Initialisierer verwenden –
Nur auf meinem 'ZielURL' Objekt? Nicht derjenige, der von der Funktion stammt, nicht wahr? – NSGangster
Ja, ich würde nur mit URL arbeiten, aber wenn Sie mit Pfaden arbeiten, müssen Sie fileURLWithPath verwenden –