web-dev-qa-db-fra.com

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

J'ai un code qui retourne le nouveau iOS 10/Swift 3 Type de remplacement NSData (?): Data

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

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

Quelqu'un peut-il préciser comment je procéderais maintenant, comme c'était le cas dans Swift 2:

jpegData.writeToFile(imagePath, atomically: true) 

Merci!

35
Kyle Gillen

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 bloqué avec un path, convertissez-le en un URL:

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

Mais, en règle générale, il est préférable d’utiliser URL références dans tout votre code, en cessant d’utiliser des chaînes de chemin.

79
Rob