2016-07-19 10 views
1

Ich habe eine einfache Funktion, die ein Wörterbuch von zwei anderen nach dem letzten kompiliert. Der Compiler zeigt keine Fehler, aber nach der Ausführung ist resultDict leer. Im Debug haben alle Vars counter, type.1 und korrekte Nicht-Null-Werte.Auffüllen Wörterbuch in Swift

func compileBaseFromCSV(original: [Int:[String]], headers: [Int:String]) -> [Int:[String:[String]]] { 
    var resultDict = [Int:[String:[String]]]() 
    var tempDict = [String]() 
    var counter = 0 
    for type in headers { 
     for object in original { 
      tempDict.append(object.1[type.0]) 
     } 
     resultDict[counter]?[type.1] = tempDict 
     counter += 1 
    } 
    print(resultDict) 
    return resultDict 
} 

Was ist falsch an diesem Code? Vielen Dank!

+0

Den Array-Enumerator für Wörterbücher nicht missbrauchen (obwohl es funktioniert, weil das Wörterbuch durch ein Tupel dargestellt wird). Der empfohlene Enumerator ist 'for (key, value) im Dictionary {}' – vadian

Antwort

0

Zum einen setzen Sie nie resultDict[counter], müssen Sie so etwas wie:

if resultDict[counter] == nil { 
    resultDict[counter] = [:] 
} 

bevor Werte hinein schieben.

Aber es scheint ein paar mehr Probleme in Ihrem Code (z. B. sollte TempDict zurückgesetzt werden?). Verwenden Sie den Debugger, um durch Ihren Code zu gehen und die Werte zu betrachten und zu überprüfen, wie sie sich ändern (und ob dies Ihrem Wunsch entspricht).