3

Mögliche Duplizieren:
create multiple variables based on an int count
Objective C Equivalent of PHP's “Variable Variables”Dynamische Variable Namen iOS

Ich mag würde einige dynamische Variablennamen in einer for-Schleife verwenden, und bin, wie ratlos tatsächlich referenziere die Variablen.

Ich habe eine Reihe von UILabels Titel poll0 - poll8. Unter Verwendung einer for-Schleife setze ich ihren Wert text auf einen anderen Wert, der von der entsprechenden Zahl in einem Array referenziert wird. Zum Beispiel:

for (int i = 0; i < [pollData count]; i++) { 
    label(i value).text = [NSString stringWithFormat:@"%@", [[pollData objectAtIndex:i] toString]]; //sorry for the java-esque method names, just create what I'm used to 
} 

Wie verwende ich, dass i Wert?

Antwort

5

Sie können nicht genau das tun, was Sie fragen. Der beste Ansatz wäre Ihre Etiketten in einem Array und Schleife durch das Array zu setzen:

NSArray *labels = [NSArray arrayWithObjects:poll0, poll1, poll2, ..., nil]; 
for (UILabel *label in labels) { 
    label.text = [[pollData objectAtIndex:i] toString]; 
} 

Sie könnten auch einen Blick auf IBOutletCollections nehmen wollen, da sie ohne Schreiben Sie gruppieren die Etiketten in einem Array lassen werden der Array-Initialisierungscode oben. Stattdessen Sie das in Ihrem .h-Datei setzen, dann haken die Etiketten im Interface Builder, um alle Ihre Etiketten Steckdose bis:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *labels; 
+0

Beat mich dazu :) und ich bin immer vorsichtig, eine schnelle Aufzählung wie folgt verwenden, aber die Dokumentation sagt, dass es in der richtigen Reihenfolge fortfahren sollte. – rosslebeau

+0

Ja, Sie können sicher sein, dass die schnelle Enumeration wirklich für Arrays funktioniert. Ich benutze es die ganze Zeit! –

+0

Wie habe ich über IB schon so lange programmiert und bin nie über IBOutletCollections gewusst? Mein Gott, ich sollte dir 50% des Geldes geben, das ich in der Zeit gespart habe, in der ich von diesem Punkt an sparen werde. Vielen Dank! –

0

Sie können ein Array mit UILabel erstellen ** statt NSArray verwenden. Auf diese Weise können Sie Array-Elemente ohne ein Casting zu UILabel