2016-09-27 4 views
-2

Ich habe Swift 2.2-Code in Swift 3.0 konvertiert, aber ich erhalte den folgenden Fehler. Swift 3.0 Konvertierungsfehler

open func saveToPath(_ path: String, format: ImageFormat, compressionQuality: Double) -> Bool 
{ 
    if let image = getChartImage(transparent: format != .jpeg) { 
     var imageData: Data! 
     switch (format) 
     { 
     case .png: 
      imageData = NSUIImagePNGRepresentation(image) 
      break 

     case .jpeg: 
      imageData = NSUIImageJPEGRepresentation(image, CGFloat(compressionQuality)) 
      break 
     } 

     let url = NSURL(string: path) 
     return imageData.write(to: url as! URL, options: true) 
    } 
    return false 
} 

Fehler:

Wert kann nicht vom Typ umwandeln 'Bool' zu erwarten Argument Typ 'data.writeOptions' (auch bekannt als 'NSData.writingOptions'))

Was ist falsch mit diesem Code?

+0

Diese Methode hat sich geändert: https://developer.apple.com/reference/foundation/nsdata/1410595-write – Moritz

+0

Auch werfen Sie NSURL zu URL, aber Sie sollten nur URL direkt verwenden. – Moritz

+0

Übergeben Sie '[]' an Optionen anstelle von 'true'. – Majster

Antwort

1

Die folgenden zwei Zeilen müssen festgelegt werden:

let url = NSURL(string: path) 
return imageData.write(to: url as! URL, options: true) 
  1. Verwenden URL, nicht NSURL.
  2. Verwenden Sie den richtigen Initialisierer, um eine Dateipfadzeichenfolge in eine Datei-URL zu konvertieren.
  3. Den richtigen Wert an den Parameter options übergeben.

Der feste Code wie werden soll:

let url = URL(fileURLWithPath: path) 
return imageData.write(to: url, options: .atomic)