2014-12-31 14 views
6

In rapido, in un ciclo gestito da un valore di indice che itera, voglio creare una variabile che abbia il nome della variabile che è una concatenazione di "persona_" e l'indice del ciclo corrente.Creare una variabile in swift con nome dinamico

Quindi il mio ciclo finisce per creare variabili come:

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

ho avuto fortuna ricerca on-line in modo da sto postando qui.

Grazie!

+5

Questa è una cattiva pratica. Probabilmente ci sono soluzioni migliori per ottenere ciò che stai cercando di fare. Se fornisci più contesto, potrei essere in grado di aiutarti. – David

risposta

1

nome let = "persona _ \ (indice)"

poi aggiungere il nome a un array mutabile dichiarato prima del ciclo.

Qualcosa del genere?

0

Quello che stai cercando di fare non è possibile in rapido. Il nome variabile è solo per l'essere umano (specialmente in un linguaggio compilato), il che significa che sono spogliati in fase di compilazione.

MA se vuoi davvero farlo, lo strumento di generazione del codice è la strada da percorrere. Trova uno strumento di generazione del codice adatto, eseguilo in fase di costruzione.

3

Una soluzione consiste nel memorizzare tutte le variabili in un array. Gli indici per le variabili che archivi in ​​quell'array corrisponderanno ai valori dell'indice che stai cercando di includere nel nome della variabile.

Creare una variabile di istanza nella parte superiore del vostro controller della vista:

var people = [WhateverTypePersonIs]()

quindi creare un ciclo che memorizzerà tuttavia molte persone che si desidera in quel variabile di istanza:

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

Se hai mai avuto bisogno di ottenere quello che sarebbe stato "persona_2" con il modo in cui stavi cercando di risolvere il tuo problema, ad esempio, potresti accedere a quella persona usando people[2].

0

In Swift non è possibile creare nomi di variabili dinamici. Quello che stai cercando di ottenere è il tipico caso d'uso per uno Array.

Creare un Array e riempirlo con i dati della persona. Più tardi, è possibile accedere alle persone tramite il suo indice:

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" 
Problemi correlati