Tôi đang viết một số mã trong Swift để tìm hiểu ngôn ngữ. Đây là lớp cơ sở của tôi:Tuple nhanh để Phân bổ tùy chọn
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)
}
}
Vấn đề là trên dòng cuối cùng:
(self.status, self.message) = self.parseResponse(resultBody)
Trình biên dịch nói "Không thể diễn tả tuple chuyển đổi (Tình trạng: Int, Lỗi: String) đến (Int ?, Chuỗi?) "
Tôi hiểu rằng vấn đề là self.status và self.message là các tùy chọn và parseResponse không trả lại Optionals (và tôi không muốn nó). Làm thế nào để tôi nói nó để thực hiện việc gán và chuyển đổi cần thiết để lấy dữ liệu vào các biến cá thể?
bạn có thể phân tách bộ và xây dựng lại nó (i, s) = (t.0, t.1) –