webentwicklung-frage-antwort-db.com.de

Gibt es eine Entsprechung für writeToFile für den 'Datentyp' von Swift 3?

Ich habe einen Code, der den neuen iOS 10/Swift 3 NSData-Ersatztyp (?) Zurückgibt: Data

if let jpegData = UIImageJPEGRepresentation(newImage, 0.8) { ... }

Ich möchte dieses Image auf die Festplatte schreiben, aber NSDatas writeToFile: Methode ist für diese Klasse nicht vorhanden. Es hat ein writeToURL: -Methode, aber das scheint mit einem Dateipfad (und der angehängten Komponente) nicht zu funktionieren.

Kann mir jemand erklären, wie ich das jetzt machen würde, wie es früher in Swift 2:

jpegData.writeToFile(imagePath, atomically: true) 

Vielen Dank!

35
Kyle Gillen

Verwenden Sie write(to: fileURL).

Beispielsweise:

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.jpg")

do {
    try jpegData.write(to: fileURL, options: .atomic)
} catch {
    print(error)
}

Oder, wenn Sie wirklich mit einem path feststecken, konvertieren Sie das in ein URL:

do {
    try data.write(to: URL(fileURLWithPath: path), options: .atomic)
} catch {
    print(error)
}

Im Allgemeinen ist es heutzutage jedoch vorzuziehen, URL -Referenzen im gesamten Code zu verwenden, sodass keine Pfadzeichenfolgen mehr verwendet werden müssen.

79
Rob