2010-07-18 4 views
2

J'ai une entité appelée Task dans mon modèle de base de données. L'entité a un attribut transformable appelé date. La classe de l'attribut date est une classe appelée TDate (qui est conforme à NSCoding, donc un attribut transformable). TDate a une propriété de type NSInteger appelée month.Syntaxe de prédicat NSFetchRequest

Dans mon NSFetchRequest je veux obtenir tous les objets Task d'un mois spécifique. J'utilise le prédicat suivant:

[NSPredicate predicateWithFormat:@"date.month == 7"]

Ce devrait me chercher tous les objets Task du mois de Juillet. Cependant, avec ce prédicat, aucun objet récupéré n'est renvoyé. Je peux confirmer qu'il y a Task objets dont le mois est le 7 (juillet) en supprimant le prédicat. Y at-il quelque chose qui ne va pas avec ma syntaxe de prédicat?

Merci

Répondre

2

Si vous utilisez un backend SQLite, alors vous ne pouvez pas rechercher des propriétés contre transformables. Sur le backend SQLite, le prédicat de la requête d'extraction est transformé en SQL et exécuté sur le moteur SQLite. Parce que SQLite n'a aucune connaissance de Cocoa, les prédicats qui s'exécutent sur le backend SQLite ne peuvent pas utiliser les propriétés transformables. Si vous utilisez un magasin XML, binaire ou en mémoire, vous pouvez utiliser des prédicats qui interrogent les propriétés transformables car le graphe d'objet entier est en mémoire et est interrogé à l'aide de Cocoa natif.

+0

J'ai fini par créer des attributs séparés pour chaque propriété de l'objet 'date'. Merci. – indragie

Questions connexes