2016-09-29 14 views
0

次のコードをこのライブラリ(https://github.com/dankogai/swift-json)からSwift 3互換コードに変換しようとしています。AnyObjectのSwift 2から3への移行JSONエラー

解決するには、いくつかのエラーが残っています。私は今この行に立ち往生しています。

extension JSON : Sequence { 

私が手にエラーが「タイプ 『JSONである』プロトコルに準拠していないが 『シーケンス』

その完全なコンテキストは以下の通りです。私はソースコードを見て、Sequenceがどのように準拠するかを確かめるためのプロトコルとしてSequenceがすでに存在していたかどうかを確認しましたが、どこから来たのかはわかりません。私はこれがスウィフト2で働いていたことを知っています。

extension JSON : Sequence { 
    public func generate()->AnyIterator<(AnyObject,JSON)> { 
     switch _value { 
     case let o as NSArray: 
      var i = -1 
      return AnyIterator { 
       i=i+1 
       if i == o.count { return nil } 
       return (i, JSON(o[i])) 
      } 
     case let o as NSDictionary: 
      var ks = Array(o.allKeys.reversed()) 
      return AnyIterator { 
       if ks.isEmpty { return nil } 
       if let k = ks.removeLast() as? String { 
        return (k, JSON(o.value(forKey: k)!)) 
       } else { 
        return nil 
       } 
      } 
     default: 
      return AnyIterator{ nil } 
     } 
    } 
    public func mutableCopyOfTheObject() -> AnyObject { 
     return _value.mutableCopy as AnyObject 
    } 
} 

何らかの形で接続されている場合、両方のリターンステートメントもエラーを出します。

return (i, JSON(o[i])) 

と...

return (k, JSON(o.value(forKey: k)!)) 

の両方が(ANYOBJECT、JSON) 'タイプを返すように '(文字列、JSON)「タイプのreturn式を変換できません' 、同じエラーを与えて?'

リターン文の値iとkをAnyObjectにキャストする必要があることを修正するとします。私は確信していません。

ここに私に与えられた提案の詳細なスクリーンショットがあります。まだコードを変更する方法がわかりません。

enter image description here

+0

'Any Any'を' Any'で置き換えようとします – vadian

答えて

1

リターン(I、JSON(O [I]))===>リターン(I ANYOBJECT、JSON(AS O [I]))swift3で

データタイプは多くでありますswift2よりも厳しい。

+0

これでシーケンス部分も修正されますか?私は今試してみる。 –

+0

シーケンスエラーはまだシーケンスの任意のアイデアに従っていないと言っていますか? –

+0

あなたは返信エラーを修正するのを手伝ってくれました。ありがとう! –

関連する問題