Sto scrivendo del codice in Swift per imparare la lingua. Qui è la mia classe di base:Swift tuple to Optional assignment
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)
}
}
Il problema è l'ultima riga:
(self.status, self.message) = self.parseResponse(resultBody)
Il compilatore dice che "non possono esprimere la conversione tuple (Stato: Int, Errore: String) per (Int ?, String?) "
Capisco che il problema è che self.status e self.message sono optionals, e parseResponse non restituisce Optionals (e io non lo voglio). Come faccio a dire che devo assegnare e convertire per ottenere i dati nelle variabili di istanza?
puoi scomporre la tupla e ricostruirla (i, s) = (t.0, t.1) –