【发布时间】:2015-08-24 02:15:25
【问题描述】:
我正在用 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 不返回可选项(我不希望它返回)。我如何告诉它进行必要的分配和转换以将数据放入实例变量中?
【问题讨论】: