Tengo problemas para configurar una propiedad transitoria en Core Data. El problema que estoy tratando de resolver es: tengo una colección de objetos almacenados con éxito utilizando Core Data. Esta colección es esencialmente una colección de solo lectura pero, en tiempo de ejecución, quiero asociar otro objeto (un UIImage en este caso) con cada elemento de la colección. No necesito almacenar los UIImages; es puramente una asociación en tiempo de ejecución. Entonces, lo que realmente necesito es un 'marcador de posición' en cada objeto de la colección donde puedo soltar el UIImage más tarde.Datos básicos y propiedades transitorias
Un atributo transitoria parece que lo correcto y, para esto, documentos de referencia de Datos Básicos me dicen que debería establecer un "atributo opcional, transitoria de tipo indefinido" en el modelo de datos que he hecho:
Además, me dice que no necesito definir una propiedad correspondiente en el objeto de implementación, pero que tendré que escribir accesor personalizado & métodos setter. He modelado estos métodos basados en los ejemplos en los documentos de la siguiente manera:
- (void)setDisplayImage:(UIImage *)anImage {
[self willChangeValueForKey:@"displayImage"];
[self setPrimitiveValue:anImage forKey:@"displayImage"];
[self didChangeValueForKey:@"displayImage"];
}
y:
- (UIImage *)displayImage {
[self willAccessValueForKey:@"displayImage"];
UIImage *anImage = [self primitiveDisplayImage];
[self didAccessValueForKey:@"displayImage"];
if (anImage == nil) {
NSData *displayImageData = [self displayImageData];
if (displayImageData != nil) {
anImage = [NSKeyedUnarchiver unarchiveObjectWithData:displayImageData];
[self setPrimitiveDisplayImage:anImage];
}
}
return anImage;
}
También hay un método diferido "escritura" (willSave) que he escrito para el estricto completitud, aunque, como antes, nunca volveré a escribir estos objetos para almacenar.
El problema que estoy recibiendo es en los métodos primitiveDisplayImage y setPrimitiveDisplayImage de - (UIImage *) displayImage {. Básicamente, el compilador arroja advertencias sobre estos dos métodos ya que "el objeto X puede no responder a 'primitiveDisplayImage' ..." etc. Sin embargo, mi comprensión de los documentos es que estos accedores/setters primitivos se crean automáticamente, esto no parece sea el caso. ¿Hay alguien por ahí que pueda ayudarme a resolver este problema? Muchas gracias