Ich schreibe einen Code in Swift, um die Sprache zu lernen. Hier ist meine Basisklasse:Swift Tuple zu Optionale Zuordnung
import Foundation
class BaseCommand:NSOperation
{
var status:Int? = nil
var message:String? = nil
func buildRequest() -> NSData?
{
return nil
}
func parseResponse(data:NSData?) -> (Status:Int, Error:String)
{
return (200, "Success")
}
override func main() {
let requestBody = self.buildRequest()
println("Sending body \(requestBody)")
// do network op
var networkResultBody = "test"
var resultBody:NSData = networkResultBody.dataUsingEncoding(NSUTF8StringEncoding)!
(self.status, self.message) = self.parseResponse(resultBody)
}
}
Das Problem in der letzten Zeile ist:
(self.status, self.message) = self.parseResponse(resultBody)
Der Compiler sagt: „Kann nicht Tupel Umwandlung Express (Stand: Int, Fehler: String) bis (Int ?, String?) "
Ich verstehe, dass das Problem ist, dass self.status und self.message Optionals sind, und die parseResponse Optionals nicht zurückgibt (und ich will es nicht). Wie sage ich es, um die notwendigen Zuweisungen und Konvertierungen durchzuführen, um die Daten in die Instanzvariablen zu bekommen?
Sie können Tupel zerlegen und neu aufbauen (i, s) = (t.0, t.1) –