2016-05-31 2 views
1

Ich bin ein Swift-Neuling und kämpfe mit unbekannten (für mich) Datenstrukturen. Ich versuche, den Status der Elemente in einem zweidimensionalen Array zu verfolgen. Konzeptionell, ich denke, es ist so etwas wie folgt aussieht:Swift: Welcher Sammlertyp für die Verfolgung des Status in einem 2-dimensionalen Array verwendet wird

x 
|_group 
| |_ item 
| |_ item 
| |_ item 
|_group 
    |_ item 
    |_ item 

Meine Logik ist, dass ich ein dict erstellen möchten für die Gruppen und in jedem Element, werde ich speichern Sie einen anderen dict mit einer ganzen Zahl (?) (?) Schlüssel und ein boolescher Wert. Wenn ich den Sammlertyp initialisiere, möchte ich, dass er 'leer' ist. So ein Beispiel:

Wenn ich das dritte Element in der ersten Gruppe auf true die gesamte Kollektion setze etwas wie folgt aussieht:

statusTracker[0:[2: true]] 

Wenn ich dann das erste Element in der zweiten Gruppe wählen erhalte ich diese :

statusTracker[0:[2: true],1:[0:true]] 

... und das erste Element in der ersten Gruppe Einstellung ergibt dies:

statusTracker[0:[0:true, 2:true],1:[0:true]] 

Meine Frage ist zweifach: Ist dies eine sinnvolle Sammlung Art zu erreichen, was ich versuche zu tun? Wenn ja, wie initialisiere ich diese Art von Datenstruktur, ohne Werte zu setzen?

+0

Scheint wie eine Reihe von Wörterbüchern ist genug für Sie da –

Antwort

1

Erklären Sie Ihre Datenstruktur als solche:

var statusTracker = [Int: [Int:Bool]]() 

Zum Beispiel:

51> var statusTracker = [Int: [Int:Bool]]() 
statusTracker: [Int : [Int : Bool]] = 0 key/value pairs 
52> statusTracker[0]=[0:true, 1:false, 2:false] 
53> statusTracker[1]=[0:false, 1:false] 
54> statusTracker 
$R7: [Int : [Int : Bool]] = 2 key/value pairs { 
    [0] = { 
    key = 0 
    value = 3 key/value pairs { 
     [0] = { 
     key = 2 
     value = false 
     } 
     [1] = { 
     key = 0 
     value = true 
     } 
     [2] = { 
     key = 1 
     value = false 
     } 
    } 
    } 
    [1] = { 
    key = 1 
    value = 2 key/value pairs { 
     [0] = { 
     key = 0 
     value = false 
     } 
     [1] = { 
     key = 1 
     value = false 
     } 
    } 
    } 
} 

Ob dies der beste Weg ist, um Ihre Daten zu repräsentieren eine ganz andere Frage ist.

+1

Dank @Ed - Ich hatte wirklich Schwierigkeiten, die Datenstruktur zu deklarieren (ich kam in der Nähe, aber musste einen Wert von 'falsch' auf das erste Element setzen was warn ' t ideal, deine Antwort hat bei mir funktioniert :-) – James

Verwandte Themen