2011-11-26 12 views
18

Soy nuevo en el modelado de datos básicos, y estoy teniendo dificultades para comprender cómo funcionan las relaciones de uno a muchos.CoreData - modelada relación uno-a-muchos salga como uno-a-uno

Tengo una entidad principal llamada Task, que puede tener varias instancias de la entidad Comment. Modelé de esta manera: en Comments, una relación de Task llama task con la entidad Task un destino. En Task, una relación llamada comments, con Comment como su destino, y ambas relaciones son mutuamente inversas.

No se define un resultado inverso en advertencias o mensajes de error. Mientras que el modelado funciona de esta manera, me he dado cuenta de que una vez que creo un segundo comentario para un Task dado, el primero se reemplaza (relación de uno a uno).

¿Cuál sería la forma correcta de decirle al Modelo de Datos Básicos que esta relación permite que muchos comentarios en una Task?

Además, dado que CoreData parece administrar las claves primarias por sí mismo, ¿cómo crearía un NSPredicate para recuperar todos los comentarios de una Tarea determinada?

¡Gracias por cualquier sugerencia!

Respuesta

42

En primer lugar es necesario configurar la opción plural en la entidad Task, seleccionarlo en su .xdatamodeled y seleccione la propiedad relationship de Task entidad a comments usted debería ser capaz de ver esto enter image description here

hay una plural opción, asegúrese de verificarlo. Debe volver a crear su NSManagedObject si usa clases generadas y también si usa el almacén sqlite debe eliminar y reconstruir para que no se queje de que el nuevo esquema no sea el mismo que el anterior.

Para verificar si tiene una relación uno a muchos, su entidad Task debe tener una propiedad llamada comentarios que es un tipo de clase de NSSet no Comentarios.

Si desea recuperar todos los comentarios para una tarea determinada que necesita para recorrer la propiedad NSSet(comments) de esa tarea.

+0

Gracias! Ni siquiera sabía que estas opciones estaban disponibles. Supongo que siempre he editado mi modelo con el panel derecho cerrado. Actualmente no estoy usando clases generadas, aparte de probar cómo Core Data nombra a los setters y getters (y las relaciones). – tutiplain