46 votes

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

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

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

Je souhaite écrire cette image sur le disque, mais la méthode writeToFile: 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 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!

94voto

Rob Points 70987

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 URL :

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

Mais, généralement, il est préférable d'utiliser les références URL dans votre code, ce qui permet de ne plus utiliser de chaînes de chemin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X