Tengo un modelo de datos básicos en el que una entidad de tarea incluye una relación opcional a muchos excluidaOcurrencias. Una de las propiedades de excluidOccurrences es start, que es un objeto NSDate. La entidad ExcludedOccurrence tiene una relación inversa obligatoria one-to con la entidad Task.Datos básicos, NSPredicate y to-many clave
Para recuperar tareas para un día específico, necesito asegurarme de que el día especificado no aparezca como la propiedad de inicio de ninguna entidad ExcludedOccurrence. Uno de los sub-predicados que estoy tratando de usar es, por tanto,
NSPredicate *occurrenceIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"(ALL excludedOccurrences.start != %@))", today];
donde hoy se encuentra un objeto NSDate para hoy incluyendo sólo los componentes día, mes y año. Todas las propiedades de inicio de ocurrencias excluidas también incluyen solo los componentes de día, mes y año.
Si bien esto debería bien, al menos la lectura de la documentación de la base de datos y NSPredicate, me sale el siguiente mensaje de error:
Terminación de aplicación debido a excepción no detectada 'NSInvalidArgumentException', razón: 'predicado no compatible
Si utilizo el predicado equivalente
NSPredicate *occurrenceIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"!(ANY excludedOccurrences.start == %@))", today];
se lanza ninguna excepción, sin embargo, el código no funciona como se esperaba: la aparición de hoy en día, que no debe ser excluido, en su lugar se excluye.
No estoy seguro también cómo probar los casos excludedOccurrences == nil: el siguiente predicado
NSPredicate *nilPredicate = [NSPredicate predicateWithFormat: @"(excludedOccurrences == nil)"];
causas en tiempo de ejecución excepción
-a-muchos clave no permitida aquí
Sin embargo, dado que la relación excludecurrencias es opcional, también necesito probar si es nula.
¿Cómo manejo esto? Gracias de antemano.
su solución de relación vacía se cuelga para mí. –
Disculpa, el formato del predicado se ha corregido. Nunca me preocupé por probar mi suposición cuando se publicó, aparentemente tampoco nadie más lo hizo. –
Es increíble cuánto tiempo he estado buscando probar uno-a-muchos para una relación vacía. ¡Así que me alegro de que lo hayas publicado aquí! –