Objetivo C Equivalente de las "Variables variables" de PHP [duplicado]

Resuelto james_womack asked hace 14 años • 2 respuestas

En PHP y JavaScript puedes usar dinámicamente una variable usando otra variable como parte de su nombre. No quiero utilizar una matriz como parte de la solución. ¿Se puede lograr esto en el Objetivo C? Me gustaría hacer algo como esto:

for (int i=1; i<6; i++) {
        if([appRecord.answer(i) length] != 0){
            self.textView.answer(i)ViewSingle.text = appRecord.answer(i);
        }
}
james_womack avatar Feb 18 '10 01:02 james_womack
Aceptado

Respuesta corta: No.

Respuesta larga: Más o menos.

  1. Puede usar una matriz, almacenar sus variables allí e indexarla.
  2. Como #1, si tus objetos son en realidad elementos de la interfaz de usuario y no quieres un montón de IBOutlets, entonces usa un IBOutletCollectionen su lugar.
  3. Puede usar un diccionario, almacenar sus variables como valores y buscarlas por clave.
  4. Puede declarar todas sus variables como @propertyy luego usarlas [self valueForKey:]para buscarlas por nombre.
  5. Puede crear el nombre del ivar como una cadena y luego usar algo como object_getInstanceVariable()para recuperar su valor directamente (esto es similar al n.° 3, excepto que no es necesario declararlo como @property). Esto es excesivamente complicado y suele ser un martillo mucho más grande de lo que realmente necesitarás.
  6. Si se trata de vistas, puede asignar a cada vista una etiqueta única y luego recuperarla a través de [superview viewWithTag:aTag]. No recomiendo utilizar este enfoque.

EDITAR: Tenga en cuenta que esto solo funciona con variables de instancia. Esto no funciona con variables globales/estáticas.

Dave DeLong avatar Feb 17 '2010 19:02 Dave DeLong