2017-08-11 4 views
0

Ich habe mehrere Arrays, Die erste enthält die Namen aller anderen Arrays.String in Array-Referenz konvertieren

Also ich den Wert des ersten Array abrufen Ich bekomme den Namen meiner gewünschten Array, aber ich weiß nicht, wie von dort aus weitergehen. Als swift sieht mein Ergebnis als String, nicht als Variablennamen. Ich habe neu erstellt mein Problem unter

import UIKit 
var str = "Hello, playground" 
var traits = ["trait one","trait 2", "trait3"] 
var trait3 = ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"] 
var counter = 2 
let intermediateV = traits[counter] 
print(intermediateV[2]) 

Der Fehler, den ich bekommen ist:

'Index' ist nicht verfügbar: kann nicht Index String mit einem Int

+1

'Züge [counter]' ist ' "trait3"', was 'intermediateV [2] 'aka' "trait3" [2] soll das machen? Versuchen Sie, "final Answer 2" zu bekommen - das wird nicht funktionieren. Verwenden Sie stattdessen mehrdimensionale Arrays oder (noch besser) Strukturen und Klassen, ** nicht ** erstellen Sie Variablen mit Zählern als Teil ihres Namens, das ist fast immer eine schlechte Idee. – luk2302

+0

Ich versuche tatsächlich, Final Answer 2 zu bekommen. Ich verstehe, dass das nicht funktionieren wird, hast du irgendwelche Vorschläge, wie du mein gewünschtes Ergebnis bekommen kannst? –

+0

Ich kann mehrdimensionale Arrays nicht verwenden, da das erste Array, auch "Traits" genannt, von Firebase heruntergeladen wird. Das andere Array aka "trait3" wird lokal gespeichert. Ich brauche einen Weg, um "Final answer 2" zu bekommen, wo diese beiden Arrays getrennt sind. –

Antwort

1

Wenn Sie nicht multidimensionalen Arrays tun können Sie Wörterbücher verwenden:

var traitKeys = ["trait one", "trait 2", "trait3"] // downloaded from somewhere, dynamic 

var traits = [ 
    "trait one" : ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"], 
    "trait 2" : ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"], 
    "trait3" : ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"] 
] 

let counter = 2 
let traitKey = traitKeys[counter] 

print(traits[traitKey] ?? "trait not found") 
1

Sie versuchen, ein Element zuzugreifen von String intermediateV ist in Ihrem Fall gleich "trait3". String-Subscription ist in Ihrem Fall jedoch nicht möglich. Sie können so etwas wie dies versuchen:

var trait1 = ["trait 0","trait 1","trait 2","trait 3","trait 4"] 
var trait2 = ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"] 
var trait3 = ["final Answer 0","final Answer 1","final Answer 2","final Answer 3","final Answer 4"] 

var traits = [trait1, trait2, trait3] 

var counter = 2 

let intermediateV = traits[counter] 

print(intermediateV[2]) 
+0

Wie ich in den Kommentaren erwähnt habe, kann ich keine mehrdimensionalen Arrays machen, da das erste Array "Eigenschaften" aus dem Internet heruntergeladen wird, so dass es Werte von Strings enthält. Ich muss diese Zeichenfolgen verwenden, um meine anderen lokal gespeicherten Arrays zu suchen –