2012-02-17 5 views
0

J'essaie de trouver un moyen de prédiction pour la première occurrence d'un événement sur un jour donné. Ainsi, un événement se produit plusieurs fois au cours de la journée (plage de 1 à 16), je veux seulement qu'il renvoie la première occurrence, puis qu'il recherche la première occurrence suivante le jour suivant.Comment prédicat pour la première occurrence sur un fetchRequest

Répondre

1

Vous ne serez pas en mesure de le faire avec un fetchRequest; vous devrez en faire deux.

Pour chaque jour, il suffit d'utiliser un prédicat pour limiter à des événements après le début de ce jour-là, en quelque sorte dans l'ordre croissant de jour, et aller chercher un seul élément:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"YourObject" inManagedObjectContext:context]; 
request.predicate = [NSPredicate predicateWithFormat:@"date > %@", beginningOfDay]; 
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]]; 
request.fetchLimit = 1; 

Bien sûr, vous aurez envie pour vérifier l'article que vous obtenez pour vous assurer que c'est toujours le même jour. Ensuite, répétez pour le lendemain.

+0

Merci pour votre suggestion, mais j'ai déjà essayé. Désolé, vous devriez avoir posté le code. Le problème avec ceci est la définition de la limite d'extraction à 1 est trop sévère. Tous les événements suivants sont perdus. – Jim

+0

Mon mauvais, j'ai raté cette partie de votre question. J'ai mis à jour ma réponse. Mais la version courte est que vous ne serez pas capable de le faire avec juste un 'NSFetchRequest'. – yuji

+0

J'avais le sentiment que j'aurais besoin de plus d'un fetchRequest. J'espérais qu'il y aurait une façon intelligente de le faire avec SUBQUERY. Il est regrettable que NSPredicate ne supporte pas les conditions (switch, if, etc.) – Jim

Questions connexes