2010-02-17 15 views
7

PHP'de ve JavaScript'te, bir değişkenin adını, bir başka değişken kullanarak kendi adının bir parçası olarak dinamik olarak kullanabilirsiniz. Çözümün bir parçası olarak bir dizi kullanmak istemiyorum. Bu, Hedef C'de başarılabilir mi?Amaç C PHP'nin "Değişken Değişkenleri" Eşdeğeri

for (int i=1; i<6; i++) { 
     if([appRecord.answer(i) length] != 0){ 
      self.textView.answer(i)ViewSingle.text = appRecord.answer(i); 
     } 
} 
+2

aynı soru: cevabı gibi olacak söylemiyorum http://stackoverflow.com/questions/2231783/create-multiple-variables-based-on-an-int-count/2231839#2231839, ama orada bu. Bir dizi kullanın. – Chuck

+0

Sanırım sorular benzer ama aynı değil. Elbette cevap elbette aynı. –

+0

Bu soru, bundan yaklaşık bir yıl sonra sorulan başka bir sorunun kopyası olabilir mi? Oh moderatörler ... –

cevap

21

Kısa cevap: Hayır

Uzun cevap: Bir tür.

  1. Bir dizi kullanabilir, değişkenlerinizi orada saklayabilir ve içine dizine ekleyebilirsiniz.
  2. # 1 gibi, nesneleriniz gerçekten UI öğeleriyse ve bir grup IBOutlets istemiyorsanız, bunun yerine bir IBOutletCollection kullanın.
  3. Sözlük kullanabilirsiniz, değişkenlerinizi değerler olarak saklayın ve bunlara anahtar olarak bakın.
  4. Tüm değişkenlerinizi @property olarak bildirebilir ve daha sonra bu adalara göre bakmak için [self valueForKey:] kullanabilirsiniz.
  5. İvarın adını bir dize olarak oluşturabilir ve sonra değeri doğrudan almak için object_getInstanceVariable() gibi bir şey kullanabilirsiniz (bu, @property olarak bildirmeniz gerekmediği sürece # 3'e benzerdir). Bu aşırı derecede karmaşıktır ve genellikle ihtiyacınız olandan çok daha büyük bir çekiçtir.
  6. Görünümlerle ilgileniyorsanız, her bir görünüme benzersiz bir etiket atayabilir ve ardından [superview viewWithTag:aTag] aracılığıyla yeniden alabilirsiniz. Bu yaklaşımı kullanmamanızı tavsiye etmiyorum.

DÜZENLEME: Bunun yalnızca örnek değişkenlerle çalıştığını unutmayın. Bu, global/statik değişkenlerle çalışmaz.

+1

Wow, [self valueForKey:] tam ihtiyacım olan şeydi çünkü ihtiyacım olan tüm değişkenler @property kullanılarak bildirilmişti. object_getInstanceVariable da işe yarayabilir, ancak henüz emin değilim. Bu konudaki en iyi cevabı internette sundunuz. –

+0

@Cirrostratus - yardım etmekten memnunum. Object_getInstanceVariable() 'i ikinci veya üçüncü bir seçenek olarak kullanırdım. 'valueForKey:' muhtemelen gitmek için en iyi yoldur. –

0

No. Ama görünümüne bir etiket vermek ve -viewWithTag: kullanabilirsiniz: Böyle bir şey yapmak istiyorum.