2014-12-31 6 views
6

In Swift, in einer Schleife von einem Indexwert, der iteriert verwaltet, möchte ich eine Variable erstellen, die den Namen der Variablen hat, die eine Verkettung von "person_" und dem aktuellen Schleifenindex ist.Erstellen Sie eine Variable in Swift mit dynamischem Namen

So endet meine Schleife auf Variablen wie das Erstellen:

var person_0 = ... 
var person_1 = ... 
var person_2 = ... 
etc... 

ich hatte kein Glück online, so dass die Suche hier ist Entsendung.

Danke!

+5

Dies ist eine schlechte Praxis. Es gibt wahrscheinlich bessere Lösungen, um zu erreichen, was Sie versuchen zu tun. Wenn Sie mehr Kontext bereitstellen, kann ich Ihnen vielleicht helfen. – David

Antwort

1

let name = "Person _ \ (Index)"

dann Namen auf ein veränderbares Array vor der Schleife deklariert hinzufügen.

So ähnlich?

0

Was Sie versuchen, ist nicht in Swift möglich. Der Variablenname ist nur für den Menschen (besonders in einer kompilierten Sprache), was bedeutet, dass er in der Kompilierungsphase entfernt wird.

Aber wenn Sie wirklich wirklich dies tun möchten, ist Code Generation Tool der Weg zu gehen. Suchen Sie nach einem geeigneten Codegenerierungstool und führen Sie es in der Erstellungsphase aus.

3

Eine Lösung besteht darin, alle Ihre Variablen in einem Array zu speichern. Die Indizes für die Variablen, die Sie in diesem Array speichern, entsprechen den Indexwerten, die Sie in den Variablennamen aufnehmen möchten.

Erstellen Sie eine Instanz Variable an der Spitze Ihrer View-Controller:

var people = [WhateverTypePersonIs]()

Dann eine Schleife erstellen, die aber viele Menschen gespeichert werden Sie in diesem Fall variabel wollen:

for var i = 0; i < someVariable; i++ { 
    let person = // someValue of type WhateverTypePersonIs 
    people.append(person) 
} 

Wenn Sie müssen immer das, was "person_2" gewesen wäre, mit der Art und Weise, wie Sie Ihr Problem lösen wollten, erreichen, zum Beispiel können Sie auf diese Person unter Verwendung von zugreifen.

0

In Swift ist es nicht möglich, dynamische Variablennamen zu erstellen. Was Sie versuchen zu erreichen, ist der typische Anwendungsfall für eine Array.

Erstellen Sie eine Array und füllen Sie sie mit Ihren Personendaten. Später können Sie die Personen über ihren Index erreichen:

var persons: [String] = [] 

// fill the array 
for i in 0..<10 { 
    persons.append("Person \(i)") 
} 

// access person with index 3 (indexes start with 0 so this is the 4th person) 
println(persons[3]) // prints "Person 3" 
Verwandte Themen