2016-11-11 21 views
0

私はSwift 3に私のアプリを移行しようとしていますが、私は問題があります。拡張エラーSwift 3 JSON

私に苦労コードセクションがある:Xcodeのは、エラーをスローところ最初の行で

extension JSON: Swift.BooleanType { 

//Optional bool 
public var bool: Bool? { 
    get { 
     switch self.type { 
     case .bool: 
      return self.object.boolValue 
     default: 
      return nil 
     } 
    } 
    set { 
     if newValue != nil { 
      self.object = NSNumber(value: newValue! as Bool) 
     } else { 
      self.object = NSNull() 
     } 
    } 
} 

は次のとおりです。

extension JSON: Swift.BooleanType { 

エラーは言う:Inheritance from non-protocol type 'BooleanType' (aka 'Bool')

は何が起こっているのか誰を知っていますそこ?

+0

何も起こらない、それは同じ問題を投げる –

答えて

0

プロトコルはSwiftのJavaインタフェースに相当します。これまでにインターフェースを使ったことがない人は、具体的な実装に欠けているクラスです。それらは、実際にそれらを実装せずにクラスのスケルトン(属性とメソッドの名前が持つ必要がある)を記述するために存在し、インタフェースを継承する他のクラスが後でそれらを肉体化できるようにします。 Swiftでは、彼らはDelegateパターンを実装するのに特に便利です。

ブール値はプロトコルではありません。それは、既存の実装を持つ非常に多くの生き生きとした呼吸コンクリート型です。

Bad : extension JSON: Swift.BooleanType {

Good : extension JSON: {

Reason : Admittedly, I am using this to modify SwiftyJSON which is a framework for processing JSON data. In doing some research it seems that they didn't allow BooleanType to allow for inheritance. The suggested means of dealing with this is simply to remove the type.

リンクである、あなたはブール型のため、既存のget/setメソッドをオーバーライドしたりofficial Apple Swift Blog.