2011-09-10 5 views
0

J'ai un modèle de données de base comme suit 1. Tâche Entité: Attributs objDueDate, Relation objRecurrence etc. 2. Récurrence Entité: Attributs objEndDate, objStartDate, tâches de relations, etc.NSPredicate avec Collection valeur-clé Opérateurs

La tâche a une relation plusieurs-à-un avec la récurrence. La récurrence a une relation un-à-plusieurs inverse avec la tâche. Je souhaite interroger la dernière tâche d'une séquence de récurrence en écrivant un prédicat NSFetchRequest comme suit

NSPredicate* lobjPredicate = [NSPredicate predicateWithFormat:"objDueDate == [email protected]"]

Cela échoue avec une erreur en disant

Mettre fin application en raison d'une exception non interceptée « NSInvalidArgumentException », raison: ' Impossible de générer le code SQL pour le prédicat (objDueDate == max: (objRecurrence.tasks.objDueDate))

Quelqu'un peut-il expliquer pourquoi cela ne fonctionne pas?

Merci à l'avance ....

Explication du scénario:

Je souhaite afficher les tâches triées par catégories. Je rends également obligatoire que si vous rendez une tâche récurrente, toutes les tâches de la récurrence partageront la même catégorie. Maintenant, il y a deux ensembles de tâches: une avec récurrence et une sans récurrence. Maintenant, hors d'une séquence de récurrence (disons A) je veux qu'une seule tâche soit présentée à l'utilisateur. Si toutes les tâches de la séquence ont été marquées, je souhaite présenter la dernière tâche effectuée à l'utilisateur. Si certaines tâches de la séquence ont été marquées comme terminées, je souhaite présenter la première tâche Incomplet à l'utilisateur.

Comment puis-je résoudre le scénario ???

Répondre

0

J'ai une idée pour une simplification qui éviterait cette erreur: récupérer les tâches d'une récurrence triées par dueDate et mettre le fetchLimit à un.

+0

Bonjour mundi j'ai déjà utilisé cette idée à quelques endroits. Mais ce que je demande est une partie d'une requête beaucoup plus complexe qui nécessite toutes les tâches avec et sans récurrence et a également des conditions sur les tâches avec des récurrences. J'ai vraiment besoin de comprendre pourquoi ce qui précède ne fonctionne pas afin de réparer d'autres parties de ma requête. Aussi j'ai besoin du résultat final dans un NSfetchedResultsController ainsi l'option d'exécuter plusieurs requêtes et de former des dictionnaires n'est pas non plus disponible. – praveen

0

Je ne sais pas pourquoi vous utilisez à la fois objRecurrence et des tâches dans le prédicat. Si elles sont l'inverse l'une de l'autre, il vous suffit de parcourir la relation Entité de tâche (objRecurrence). Cela pourrait résoudre votre problème.

+0

S'il vous plaît voir mon explication du scénario – praveen