2016-04-26 10 views
0

Ich bekomme diesen Fehler: mehrdeutige Verwendung von tiefgestellten, und ich weiß nicht, wie man es löst. Kannst du bitte helfen ? Die erste in der Linie ist:Swift, Fehler: mehrdeutige Verwendung von tiefgestellten

next = next[sub]

Hier ist der Code:

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 
     } 
    } 
} 

Vielen Dank,

+0

Ist es Schlüsselabonnement oder Indexabonnement? Das ist was * zweideutig * bedeutet. – vadian

Antwort

0

Sie müssen den Compiler sagen, welchen Datentyp self ist, wie:

var next = self as? [String]

oder

var next = self as? [String:AnyObject]

Wenn Sie nicht sicher sind, werden Sie wollen, wie

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

(Ich bin nicht sicher, welche Art self hier eine Verzweigungsbedingung zu tun ist, können Sie andere Arten benötigen, als [String] und [String:AnyObject]).

Verwandte Themen