Ich bin ein Video dank downloadTaskWithURL Herunterladen und ich spare es mit diesem Code zu meiner Galerie:Swift - Herunterladen von Videos mit downloadTaskWithURL
func saveVideoBis(fileStringURL:String){
print("saveVideoBis");
let url = NSURL(string: fileStringURL);
(NSURLSession.sharedSession().downloadTaskWithURL(url!) { (location:NSURL?, r:NSURLResponse?, e:NSError?) -> Void in
let mgr = NSFileManager.defaultManager()
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0];
print(documentsPath);
let destination = NSURL(string: NSString(format: "%@/%@", documentsPath, url!.lastPathComponent!) as String);
print(destination);
try? mgr.moveItemAtPath(location!.path!, toPath: destination!.path!)
PHPhotoLibrary.requestAuthorization({ (a:PHAuthorizationStatus) -> Void in
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(destination!);
}) { completed, error in
if completed {
print(error);
print("Video is saved!");
self.sendNotification();
}
}
})
}).resume()
}
es auf meinem Simulator perfekt funktioniert gut, aber auf meinem iPad des Das Video wird nicht gespeichert, auch wenn print("Video is saved!");
angezeigt wird. Haben Sie eine Idee warum?
Ich habe auch diese Nachricht in meiner Konsole erscheinen
Unable to create data from file (null)
Die Dokumentation für die 'completionHandler 'Teil der" downloadTaskWithURL "-Methode sagt" Sie müssen diese Datei verschieben oder öffnen Sie es für das Lesen vor Ihrer FertigstellungHandler zurückkehrt ". Nun, du scheinst immer noch im Completion-Handler zu sein, aber vielleicht (und ich vermute hier) rufst du eine andere Methode ('performChanges') in deinem CompletionHandler auf. Könnten Sie vielleicht versuchen, die Datei an einen anderen Ort zu kopieren, bevor Sie 'performChanges' aufrufen? – pbodsk
Ich bin relativ neu zu Swift, kannst du mir bitte ein Beispiel geben, wie das geht? –
Sie benötigen eine 'sourceURL' vom Typ NSURL, das ist Ihre' location' dann benötigen Sie eine 'destinationURL' Sie könnten vielleicht die 'location' nehmen und etwas an sie anhängen, vielleicht' let destination = NSURL (fileURLWithPath: location.absoluteString + "_dest") '. Sobald Sie das haben, benötigen Sie einen 'Dateimanager' vom Typ' NSFileManager', wie zum Beispiel 'let filemanager = NSFileManager.defaultManager()'. Und dann können Sie die Datei verschieben, indem Sie 'fileManager.moveItemAtURL (location, toURL: destination)' sagen. Diese Methode "wirft", also müssen Sie das in ein "do ... try ... catch" umwandeln. Hoffnung, die Sinn macht – pbodsk