我像这样声明了一个协议
protocol JSONConnection {
var request: NSURLRequest { get set }
var session: NSURLSession { get set }
var jsonRootObject: JSONSerializable? { get set }
}
在这里, JSONSerializable 不是一个实际的类型,它是我这样声明的另一个协议:
protocol JSONSerializable {
func readFromJSON(json: JSON) throws
}
所以,事实上,这个 JSONConnection 协议需要一个名为 jsonRootObject 的变量,它只需要符合 JSONSerializable 协议即可。
美好的。
现在,对于实现。
我创建了一个名为 JSONStockDetailRootObject 的类,它符合 JSONSerializable 协议。
class JSONStockDetailRootObject: JSONSerializable
我想创建一个符合 JSONConnection 协议的 StockConnection 类。
class StockConnection: JSONConnection {
var request: NSURLRequest
var session: NSURLSession
var jsonRootObject: JSONStockDetailRootObject?
}
我认为,如果我有一个符合 JSONSerializable 协议的类型的 jsonRootObject 变量,那么 StockConnection 类又将符合 JSONConnection 协议……但不是。
编译器声称:“协议需要属性 'jsonRootObject' 类型为 'JSONSerializable?'
我错过了什么?谢谢