He configurado un modelo de Datos centrales donde tengo dos objetos, por ejemplo Persona y Dirección. Una persona tiene una dirección y una dirección puede pertenecer a muchas personas. Lo he modelado en datos básicos como tal (por lo que la flecha doble apunta a Persona, mientras que la flecha simple va a Dirección)Core Data devuelve NSManagedObject en lugar de la clase Concrete, pero solo cuando se usa. accesor
He creado dos clases para esos objetos e implementado algunos métodos personalizados en esas clases. En el modelo de Datos básicos, he introducido los nombres de las clases en ellos.
Si obtengo una Dirección de Datos centrales directamente, me da la clase concreta real y puedo llamar a mis métodos personalizados en ella.
Si, por otro lado, busco una Persona e intento acceder a la Dirección a través de Persona (por ejemplo: dirección.persona) obtengo un NSManagedObject que es una dirección (por ejemplo: puedo acceder a todos los atributos de datos básicos I 's establecido en él) pero no responde a mis métodos personalizados, porque es del tipo NSManagedObject en lugar de la dirección. ¿Es esto una limitación de Core Data o estoy haciendo algo mal? Si se trata de una limitación, ¿hay algún problema?
No es una limitación de Core Data; ciertamente estás haciendo algo mal. ¿A qué se refiere exactamente con "no responde a mis métodos personalizados, porque es del tipo NSManagedObject en lugar de Address"? ¿Obtiene una excepción de selector no reconocido? ¿Se queja el compilador? Muéstranos algunos códigos y resultados o será difícil diagnosticar el problema. –
Por lo tanto, se trata de un error de tiempo de ejecución (no del compilador), de que NSManagedObject no responde al nombre de mi método personalizado. El mismo error que obtienes cuando no especificas el nombre de tu clase en el modelador de datos básicos. – rustyshelf