He tratado de usar recuperan las propiedades de un par de veces, y aunque parece ser el enfoque correcto, es nunca obras.

En mi último intento he añadido la tomó de la propiedad a mi entidad, seleccionado la otra entidad en el modelo como el ‘destino’, y establecer el predicado a una condición que sé es válido.

Problema 1: Cuando el NSManagedObject de clase para que la entidad se genera no incluye nada para la traída de la propiedad. Después de algunas búsquedas, he añadido la declaración en el .h archivo y el @dinámica declaración en el .m archivo (sí, sé que es un NSArray * tipo).

Problema 2: después de eso, cuando puedo acceder a esta propiedad en el código me sale una excepción que estipula algo para el efecto de que la captura de solicitud no tiene una entidad. Estoy asumiendo que la «entidad» será el que se especifica como el ‘destino’ y es, en realidad, no.

Así, me gustaría que alguien proporcione un concreto ejemplo de trabajo (plataforma iOS) donde se recupera de la propiedad se define en el modelo, se declara en un NSManagedObject de la clase derivada, y de hecho se utiliza a partir de un código.

Que en este momento me estoy dando en este momento-waster y simplemente la implementación de la captura de solicitud de código de mí mismo.

  • Teniendo el mismo problema: la entidad se establece en el modelo (y puedo ver que en el contents XML), pero el modelo compilado que se carga en la aplicación no tiene destino conjunto de entidades. Frustrante!
InformationsquelleAutor | 2011-09-08

3 Comentarios

  1. 26

    Aquí está mi relevantes bits de código (incluyendo los bits que ya he mencionado):

    Mi ejemplo tiene una «Tarjeta» objeto que tiene un 1->muchos la relación con un ‘Stats’ objeto. Cada una de las ‘Estadísticas’ objeto tiene un «resultado» que pueden ser de 1-4. Mi recupera la propiedad es un simple dar mi Tarjeta objeto de una matriz de «Estadísticas» de los objetos que son de «resultado» =1 sólo.

    Yo quería usar la tomó de la propiedad, de modo que fácilmente se podría conseguir el asimiento de ‘Tarjeta’ los objetos que había más de un cierto número y tipo de ‘Estadísticas’ de los objetos.

    Así, en la «Tarjeta» objeto pongo la tomó de la Propiedad ‘statsOfTypeOne’, con Destino a ‘Estadísticas’.

    En el predicado de esta recuperado de la propiedad pongo

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

    ‘YO’ es el ‘estadísticas’ de registro, y $FETCH_SOURCE por arte de magia se convierte en la ‘Tarjeta’ objeto cuando se ejecuta.

    Como lo hizo, me puso lo siguiente en el .h and .m archivos de la Tarjeta objeto:

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

    A continuación, en mi código que he usado:

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

    para llegar a la matriz (aunque cardInstance.statsOfTypeOne debe estar bien). Sin la actualización de objeto no era la actualización de la Traída de la propiedad (según el manual).

    Me pensar que todo lo que hice para hacer que funcione. Déjame saber si funciona para usted.

    Pedro

  2. 5

    Agregar a @la respuesta de Pedro. He aquí cómo yo tengo trabajo en Swift 2.0 y Xcode 7:

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

    Y, a continuación, leer la tomó de la propiedad:

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

    Has echado un vistazo a esta pregunta anterior: Xcode 4 Datos Básicos: Cómo utilizar la tomó de la propiedad creada en el editor de modelos de Datos

    Leer a través de la aceptación de la respuesta y todos los comentarios. Suena como que ha resuelto.

    • Gracias sosborn, pero ya he sido a través de la que uno, que es donde he encontrado la respuesta al Problema 1 en mi post, pero el uso de la propiedad en la aplicación lanza la excepción expuesta en el Problema 2.

Dejar respuesta

Please enter your comment!
Please enter your name here