J'ai un modèle de données de base dans lequel une entité de tâche inclut une relation facultative to-many exclueOccurrences. L'une des propriétés de excludedOccurrences est start, qui est un objet NSDate. L'entité ExcludedOccurrence a une relation inverse to-one obligatoire avec l'entité Task.Données de base, clés NSPredicate et à plusieurs
Afin d'extraire des tâches pour un jour spécifié, je dois m'assurer que le jour spécifié n'apparaît pas comme la propriété start d'une entité ExcludedOccurrence. L'un des sous-prédicats je suis en train d'utiliser est donc
NSPredicate *occurrenceIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"(ALL excludedOccurrences.start != %@))", today];
où aujourd'hui est un objet NSDate pour aujourd'hui, y compris seulement les composantes jour, mois et année. Toutes les occurrences de début d'occurrences exclues incluent également uniquement les composants du jour, du mois et de l'année.
Bien que cela devrait bien, au moins la lecture de la documentation de base de données et NSPredicate, je reçois le message d'erreur suivant:
Mettre fin application en raison d'une exception non interceptée « NSInvalidArgumentException », la raison: « prédicats non pris en charge
Si j'utilise le prédicat équivalent
NSPredicate *occurrenceIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"!(ANY excludedOccurrences.start == %@))", today];
aucune exception est levée, mais le code ne fonctionne pas comme prévu: l'apparition d'aujourd'hui, qui ne devrait pas être exclu, est exclu à la place.
Je ne suis pas sûr aussi comment tester les excludedOccurrences de cas == nil: le prédicat suivant
NSPredicate *nilPredicate = [NSPredicate predicateWithFormat: @"(excludedOccurrences == nil)"];
causes qui sont à l'exécution à l'exception
à plusieurs clé ne permet ici
Cependant, étant donné que la relation excludedOccurrences est facultative, j'ai également besoin de tester si elle est nulle.
Comment faire face à cela? Merci d'avance.
votre solution de relation vide se bloque pour moi. –
Désolé, le format de prédicat a été corrigé. Je n'ai jamais pris la peine de tester mon hypothèse quand cela a été posté, apparemment personne d'autre ne l'a fait non plus. –
Il est incroyable combien de temps j'ai cherché à tester un un-à-plusieurs pour une relation vide. Tellement content que tu l'aies posté ici! –