2016-04-26 5 views
0

私はこのエラーが発生しています:下付き文字のあいまいな使用と私はそれを解決する方法がわかりません。助けてもらえますか? 最初のものはラインである:ここではスウィフト、エラー:下付き文字のあいまいな使用

next = next[sub]

コードです:

public subscript(path: [SubscriptType]) -> JSON { 
    get { 
     if path.count == 0 { 
      return JSON.nullJSON 
     } 

     var next = self 
     for sub in path { 
      next = next[sub] 
     } 
     return next 
    } 
    set { 

     switch path.count { 
     case 0: return 
     case 1: self[path[0]] = newValue 
     default: 
      var last = newValue 
      var newPath = path 
      newPath.removeLast() 
      for sub in Array(path.reverse()) { 
       var previousLast = self[newPath] 
       previousLast[sub] = last 
       last = previousLast 
       if newPath.count <= 1 { 
        break 
       } 
       newPath.removeLast() 
      } 
      self[newPath[0]] = last 
     } 
    } 
} 

あなたはデータ型 selfが何であるかをコンパイラに指示する必要があります

+0

キー購読またはインデックス購読ですか?それは*あいまいであることを意味します。 – vadian

答えて

0

、どうもありがとうございました、以下のような:

var next = self as? [String]

または

var next = self as? [String:AnyObject]

あなたがわからない場合、あなたは、私がまさにここにあるどのようなタイプself、あなたが[String]以外の型が必要な場合がありますことを確認していない(

if let next = self as? [String] 
    { // foo } 
else if let next = self as? [String:AnyObject] 
    { // bar } 

のような分岐条件をしたいでしょうおよび[String:AnyObject])。

関連する問題