5

私はそのようにプロトコルを宣言しました

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 プロトコルには、JSONSerializable プロトコルに準拠する必要があるだけの jsonRootObject という変数が必要です。

罰金。


さて、実装について。

JSONSerializable プロトコルに準拠する JSONStockDetailRootObject というクラスを作成しました。

class JSONStockDetailRootObject: JSONSerializable

そして、JSONConnection プロトコルに準拠する StockConnection クラスを作成したいと考えました。

class StockConnection: JSONConnection {
  var request: NSURLRequest
  var session: NSURLSession
  var jsonRootObject: JSONStockDetailRootObject?
}

JSONSerializable プロトコルに準拠したタイプの jsonRootObject 変数があれば、このクラス StockConnection は JSONConnection プロトコルに準拠すると思いましたが、そうではありません。

コンパイラは次のように主張しています。

私は何が欠けていますか?ありがとう

4

1 に答える 1