iphone objective-c ios core-data fetched-property

iphone - ¿Alguien tiene un ejemplo funcional de una propiedad recuperada en core-data?



objective-c ios (3)

He intentado usar propiedades recuperadas un par de veces, y aunque parece ser el enfoque correcto, nunca funciona.

En mi último intento, agregué la propiedad de búsqueda a mi entidad, seleccioné la otra entidad en el modelo como el ''destino'' y establecí el predicado en una condición que sé que es válida.

Problema 1: cuando se genera la clase NSManagedObject para la entidad, no incluye nada para la propiedad recuperada. Después de buscar, agregué la declaración en el archivo .h y la declaración @dynamic en el archivo .m (sí, sé que es un tipo NSArray *).

Problema 2: Incluso después de eso, cuando accedo a esta propiedad en el código obtengo una excepción que establece algo en el sentido de que la solicitud de obtención no tiene una entidad. Estoy asumiendo que la ''entidad'' sería la especificada como el ''destino'' y está, de hecho, allí.

Por lo tanto, me gustaría que alguien proporcione un ejemplo de trabajo concreto (plataforma iOS) donde una propiedad captada se defina en el modelo, declarada en una clase derivada de NSManagedObject y realmente utilizada desde el código.

En este punto, estoy renunciando a esta pérdida de tiempo y simplemente implementando el código de solicitud de obtención de información.



Agregando a la respuesta de @ Peter. Así es como lo conseguí trabajando en Swift 2.0 y Xcode 7:

import Foundation import CoreData @objc(Card) class Card: NSManagedObject { @NSManaged var statsOfTypeOne: [Stat] }

Y luego, para leer la propiedad obtenida:

managedObjectContext.refreshObject(someCard, mergeChanges: true) // This works and returns [Stat] type someCard.statsOfTypeOne // So does this someCard.valueForkey("statsOfTypeOne") as! [Stat]


Aquí están mis bits de código relevantes (incluidos los bits que ya has mencionado):

Mi ejemplo tiene un objeto ''Tarjeta'' que tiene una relación 1 -> muchos con un objeto ''Estadísticas''. Cada objeto ''Estadísticas'' tiene un ''resultado'' que puede ser 1-4. Mi propiedad recuperada es simple para darle a mi objeto ''Tarjeta'' una matriz de objetos ''Estadísticas'' que son de ''resultado'' = 1 solamente.

Quería usar la propiedad recuperada para poder acceder fácilmente a los objetos ''Tarjeta'' que tenían más de cierto número y tipo de objetos ''Estadísticas''.

Entonces, en el objeto ''Tarjeta'' coloco la Propiedad Obtenida ''statsOfTypeOne'', con el Destino establecido en ''Stats''.

En el predicado para esta propiedad captada puse

(SELF.outcome=1) AND (SELF.card=$FETCH_SOURCE)

''SELF'' es el registro ''stats'', y $ FETCH_SOURCE se convierte mágicamente en el objeto ''Card'' cuando se ejecuta.

Como lo hizo, puse lo siguiente en los archivos .h y .m para el objeto ''Tarjeta'':

@property (nonatomic, retain) NSArray *statsOfTypeOne; @dynamic statsOfTypeOne;

Luego, en mi código, utilicé:

[self.managedObjectContext refreshObject:cardInstance mergeChanges:YES]; [cardInstance valueForKey:@"statsOfTypeOne"]

para llegar a la matriz (aunque cardInstance.statsOfTypeOne debería estar bien). Sin el objeto de actualización, no estaba actualizando la propiedad Obtenida (según el manual).

Creo que eso es todo lo que hice para que funcione. Avíseme si funciona para usted.

Peter