Existe-t-il un équivalent writeToFile pour le type 'Data' de Swift 3?

J'ai du code qui renvoie le nouveau remplacement iOS 10 / Swift 3 NSData (?) type: données

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

Je veux écrire cette image sur le disque, mais la méthode writeToFile: de NSData n'est pas présente pour cette classe. Il a une méthode writeToURL:, mais cela ne semble pas fonctionner avec un chemin de fichier (et l'ajout d'un composant).

Quelqu'un peut-il clarifier comment je le ferais maintenant, comme c'était le cas dans Swift 2:

jpegData.writeToFile(imagePath, atomically: true) 

Merci!

32
demandé sur Kyle Gillen 2016-07-14 07:46:43

1 réponses

Utilisez write(to: fileURL).

Par exemple:

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)
}

Ou, si vous êtes vraiment coincé avec un path, convertir un URL:

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

Mais, en général, il est préférable d'utiliser des références URL dans votre code de nos jours, en supprimant l'utilisation des chaînes de chemin.

76
répondu Rob 2016-09-02 06:14:18