Aún no tengo privilegios de comentario, pero para agregar a la respuesta de @ Costique, hay un atributo adicional Tipo valor "V" que es el nombre del IVar al que se puede enlazar una propiedad (a través de sintetizar) Esto puede ser descubierta fácilmente con este
@interface Redacted: NSObject
@property (atómico, de sólo lectura) int foo;
@end
@implementation Redacted
@synthesize foo = FooBar;
@end
// for all properties
unsigned propertyCount = 0;
objc_property_t *properties = class_copyPropertyList([object class], &propertyCount);
for (int prop = 0; prop < propertyCount; prop++)
{
// for all property attributes
unsigned int attributeCount = 0;
objc_property_attribute_t* attributes = property_copyAttributeList(property, &attributeCount);
for (unsigned int attr = 0; attr < attributeCount; attr++)
{
NSLog(@"Attribute %d: name: %s, value: %s", attr, attributes[attr].name, attributes[attr].value);
}
}
2013-07-08 13: 47: 16.600 Redacted5162: 303] Atributo 0: nombre: T, valor: i
2013-07-08 13 : 47: 16.601 Redactado [5162: 303] Atributo 1: nombre: R, valor:
2013-07-08 13:47:16.602 Redacted [5162: 303] Atributo 2: nombre: V, valor: fooBar
Una idea admirable, pero por ese camino yace la locura. Va a reinventar la rueda (Core Data ya proporciona una excelente persistencia basada en modelos) y el sistema de propiedades * * no está diseñado para ser la base de cualquier tipo de persistencia automática. El resultado final será terriblemente frágil y será un verdadero dolor escribirlo en primer lugar, dados los caprichos de los tipos de datos C. – bbum
A pesar de mi voto a favor en la respuesta de "propiedades, por favor" a continuación ... ESTO es cuando necesita ir a aprender los datos principales. En serio, valdrá la pena. No es para principiantes, sino para IMO, una vez que empiezas a hacer cosas como hackear el tiempo de ejecución objc, es hora de leer esos extraños documentos y darte la vuelta haciéndolo de la manera correcta. :) – buildsucceeded
@buildsucceeded Sé cómo usar datos básicos. Es una gran solución cuando se trata de un proyecto de tamaño mediano/grande que requiere datos relacionales. Pero cuando se trata de un proyecto realmente pequeño donde todo lo que necesito para serializar un solo objeto para mantener el estado de la aplicación, es una sobreestimación el uso de datos centrales. Además, utilicé esta solución para otros fines, como Object-To-Dictionary-Serialization y un DI Framework – aryaxt