2009-07-20 5 views
2

Je suis nouveau dans le développement pour l'iPhone et j'utilise Core Data pour la gestion de mes données. Mes objets gérés ont une propriété appelée creationDate et j'ai besoin d'une liste de toutes les dates distinctes qui se trouvent dans la base de données. Pour réduire la surcharge, définisseziPhone Core Data récupérer des manipulations de date

[fetchRequest setPropertiesToFetch: [NSArray arrayWithObject: @ "creationDate"]];

parce que c'est tout ce dont vous avez besoin.

Je sais que je peux définir [fetchRequest setReturnsDistinctResults: YES]; pour obtenir les dates distinctes, mais comment puis-je prendre seulement la partie date d'un NSDate dans une requête de récupération?

grâce,

Thomas

post-scriptum En SQL, cela ressemblerait à ceci: SELECT DISTINCT DATE (creationDate) FROM events;

Répondre

4

Par "date de la partie d'un NSDate" je suppose que vous voulez dire par rapport à l'heure? Vous ne pouvez pas exprimer directement cela aux fins de résultats distincts si l'entrée dans le magasin a l'heure codée. Ce que vous pouvez faire est de diviser le creationDate dans votre modèle en deux propriétés, la date et l'heure, et de normaliser toutes les dates en une seule fois (ou si vous ne vous souciez pas du temps que vous pouvez jeter le temps). Si vous avez encore besoin de temps, il est possible de faire des requêtes uniquement par rapport à la date. Si votre entité possède sa propre sous-classe, vous pouvez le faire en écrivant un setter personnalisé qui prend les données, extrait les composants via NSDateComponents et les réassemble en une date via NSCalendar. Oui, il semble qu'il devrait être plus simple de gérer les dates, mais il est nécessaire de prendre un chemin un peu détourné.

Questions connexes