www iphone cocoa cocoa-touch core-data entity-relationship

iphone - www - Datos básicos relación muchos a muchos-Pregunta de predicados



tumblr settings (3)

En mi modelo de Datos Básicos, tengo dos entidades: Lista y Paciente. La lista tiene un atributo llamado ''nombre''.

Una lista puede tener cualquier cantidad de pacientes y cada paciente puede pertenecer a cualquier cantidad de listas diferentes. Por lo tanto, he establecido una relación en List llamada ''pacientes'' que tiene una relación inversa a-muchos con el paciente Y una relación en el paciente llamada ''listas'' que tiene una relación de muchos a la lista.

Lo que me cuesta entender es cómo crear un Predicado que seleccionará a todos los Pacientes que pertenecen a un Nombre de Lista particular.

¿Cómo voy a hacer esto? Nunca he usado relaciones antes en Core Data.

Gracias,


Dado un modelo de datos como:

Lista << - >> Paciente,

puede encontrar todas las instancias de pacientes que pertenecen a una lista con un nombre particular con una solicitud de búsqueda en la entidad Patient usando un predicado como:

[NSPredicate predicateWithFormat:@"ANY lists.name LIKE[cd] %@", listName]

asumiendo que listName es una instancia de NSString con el nombre de lista que desea. LIKE[cd] hace una comparación insensible a mayúsculas y diacrítica-insensible.


Esto parece funcionar bien:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];

Donde myList es una entidad de lista real.


Parece que su modelo de datos es este:

Lista << - >> Paciente

Creo que si conoces el nombre de la lista en particular, entonces conoces el objeto de la lista en particular. Si es así, puede agarrar a los pacientes usando la relación de muchos a todos, desde la lista al paciente: es un conjunto de objetos para el paciente. Por ejemplo, si la relación de List to Patient se llama "pacientes":

NSSet *patientSet = listObject.patients;

Nota: esto requiere que cree subclases para sus objetos administrados para que pueda acceder a los atributos y relaciones como propiedades en sus objetos.

Si solo conoce el nombre de la lista por algún motivo, y está buscando objetos del paciente, puede crear un predicado utilizando la relación múltiple del paciente a la lista (suponiendo que se llame "listas" y el nombre de la lista en una cadena llamada " Lista de nombres"):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY lists.name == %@",listName];