NSFetchedResultsController : éléments des dernières 24 heures

J'ai un ensemble d'éléments CoreData comportant un attribut "creationDate".

Je souhaiterais créer un NSFetchedResultsController me retournant automatiquement les éléments dont la date n'excède pas 24 heures.


[request setPredicate:[NSPredicate predicateWithFormat:@"creationDate > %@", [NSDate dateWithTimeIntervalSinceNow:-86400]]];




Le problème de cette solution, c'est qu'une heure après, les dernières 24 heures se transforment en 25 heures, puis 26... Cela va bien pour une simple requête, mais pour un NSFetchedResultsController, il n'y a pas de réactualisation dynamique.



Est-ce que quelqu'un a une solution pour qu'un objet devant expirer dans une minute soit bel et bien retiré de cette liste la minute suivante ?

Réponses

  • Je doute qu'il y ait une solution viable autre qu'une timer à  la con qui refait la requête.. mais si tu trouves ça peut être intéressant de savoir comment faire
  • février 2012 modifié #3
    Ou alors il faudrait que les objets gèrent manuellement leur expiration et se retirent d'eux même de la liste, mais ne connaissant pas assez CoreData je sais pas si c'est possible en fait..
  • février 2012 modifié #4
    Bon je viens de lire (rapidement) la doc de NSFetchedResultsController.

    Donc ce que je dis ne peut pas se faire. Sauf ce dont je parlais au début, à  savoir de rafraà®chir. Si je comprend bien c'est possible en faisant un -performFetch: ?

    Ducoup pourquoi ne pas déclencher l'action -performFetch: au moment T. où T est la date d'expiration de l'objet qui se rapproche le plus des 24h?
  • Oui, c'est ma solution pour le moment : utiliser un timer pour actualiser le contenu toutes les 5 minutes (ce n'en est pas à  quelques minutes près).

    Mais je me demandais s'il n'y avait pas des notions bien plus avancées permettant de le faire automatiquement.
  • Bha, ce que je viens de te dire non? Après c'est à  toi de faire en sorte que ça soit automatique ducoup puisque ça ne semble pas exister de base. Mais au lieu de faire ça toutes les 5 minutes, il suffit de déclencher le refresh à  l'instant T comme je l'ai expliqué.
  • Oui mais tant qu'à  faire de gérer moi même le tout, j'adapte un peu en fonction du besoin de mon application (pour faire d'autres vérifications en même temps).
Connectez-vous ou Inscrivez-vous pour répondre.