Я пишу код в Swift для изучения языка. Вот мой базовый класс:
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)
}
}
Проблема находится в последней строке:
(self.status, self.message) = self.parseResponse(resultBody)
Компилятор говорит: "Невозможно выразить преобразование кортежа (Status: Int, Error: String) в (Int?, String?)"
Я понимаю, что проблема в том, что self.status и self.message являются опциями, и parseResponse не возвращает Optionals (и я не хочу этого). Как я могу сказать, что нужно выполнить назначение и преобразование, чтобы получить данные в переменные экземпляра?