Я объявил такой протокол
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
И я хотел создать класс StockConnection, соответствующий протоколу JSONConnection.
class StockConnection: JSONConnection {
var request: NSURLRequest
var session: NSURLSession
var jsonRootObject: JSONStockDetailRootObject?
}
Я думал, что если бы у меня была переменная jsonRootObject типа, который соответствовал протоколу JSONSerializable, то этот класс StockConnection, в свою очередь, соответствовал бы протоколу JSONConnection ... но нет.
Компилятор утверждает: «Протокол требует свойства 'jsonRootObject' с типом 'JSONSerializable?'
Что мне не хватает? Спасибо
jsonRootObject
. Теперь это больше не соответствует. - person R Menke   schedule 14.02.2016