telecharger - mise a jour iphone ios 12




Impossible d'utiliser un prédicat qui compare les dates dans Magical Record (2)

Je fais une méthode qui supprimera tous mes NSManagedObjects qui n'ont pas été mis à jour lors de la dernière synchronisation.

- (void)removeStaleObjects {

        // Delete objects that have not been updated in this sync.
    NSPredicate *stalePredicate = [NSPredicate predicateWithFormat:@"updated < %@", self.syncStart];
    NSArray *staleObjects = [Node MR_findAllWithPredicate:stalePredicate];

    for (Node *n in staleObjects) {
        [[NSManagedObjectContext MR_defaultContext] deleteObject:n];
    }

}

Le code continue d'échouer sur la ligne MR_findAll ... avec

[__NSDate objCType]: unrecognized selector sent to instance

J'ai vérifié ma syntaxe avec la documentation d'Apple et je suis 99% positif que je crée le prédicat correctement, startDate est juste

_startDate = [NSDate date];

qui est exécuté avant ma synchronisation. puis après ma synchronisation j'appelle

[self removeStaleObjects];

Est-ce que quelqu'un sait où je me trompe?

Mise à jour : J'ai réussi à le faire fonctionner en stockant l'heure de mise à jour en double. Cependant, je suis toujours intéressé à le faire travailler avec NSDates, donc si quelqu'un trouve quelque chose, s'il vous plaît le poster ici.


Il me semble également que votre prédicat est correctement formaté. Voici quelques choses que vous pouvez faire:

1) Lors du débogage, imprimez ce prédicat. Vous devriez voir quelque chose comme:

updatedDate < {some integer value}

Les dates sont stockées sous forme d'entiers sous les couvertures et un prédicat le convertit également correctement. Si votre prédicat n'est pas imprimable dans le débogueur, vous saurez tout de suite

2) Vérifiez votre type de date mise à jour. Assurez-vous que c'est une date (je crois que c'est déjà une date, mais vous ne l'avez pas spécifiée dans votre question)

3) Assurez-vous que l'objet Node possède l'attribut updatedDate .