Core Data NSPredicate NSNumber

Salut à  tous,


 


Je rencontre un petit soucis avec un truc qui normalement devrait fonctionner. J'ai une classe Promotion avec un attribut "promotion_type" qui est de type NSNumber.


 


J'utilise Magical Record et je récupère un tableau vide quand je fais :



[Promotion MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@promotion_type == %@", [NSNumber numberWithInteger:0]] inContext:aContext];

Alors que je récupère les objetcs que j'attends quand je fais :



[Promotion MR_findAllInContext:aContext];

C'est donc que mon NSPredicate n'est pas correct.


 


Pouvez-vous me dire ce que vous voyez d'incorrect ?


 


Salut.


Réponses

  • Pour info, ma classe possède aussi un attribut de type NSString et lorsque je fais un predicate sur cette chaà®ne, ça ne fonctionne pas non plus :



    NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@url_image_1 == %@", @https://monUrldePromo];

    Je commence à  penser que c'est la première partie de mon predicate qui pose un soucis mais je ne vois pas encore où. Une idée ?


  • Hello,


     


    Et si tu inspectes la base de données SQLite, est-ce que tu vois bien tes objets promotions ?


  • jpimbertjpimbert Membre
    novembre 2015 modifié #4

    Essaie avec un seul "=" :



    [Promotion MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@promotion_type = %@", [NSNumber numberWithInteger:0]] inContext:aContext];

  • amadehamadeh Membre
    novembre 2015 modifié #5

    Je viens d'essayer avec un seul égal et ça ne fonctionne pas :


     


    Je vais voir la base de données.



    NSArray<Promotion *> * promotionArray = [Promotion MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@promotion_type = %@", [NSNumber numberWithInteger:0]] inContext:aContext];

  • amadehamadeh Membre
    novembre 2015 modifié #6

    Je n'ai pas trouvé de fichier sqlite alors peut être que j'ai cherché dans le mauvais répertoire.


     


    J'ai cherché dans :


     


    ~/Library/Developer/CoreSimulator/Devices/ [id du device]/data/containers/Data/application/[id de l'application]


     


    C'est bien ça ?


     


    Dans le appDelegate, j'ai fait :



    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@NomBeMaBase.sqlite];
  • Je préfère faire un LIKE dans des comparaisons avec des NSStrings... Potentiellement un LIKE[c] pour éviter un soucis de case-sensitive?


    @promotion_type.intValue == %d, 0 renvoie bien ton résultat?


  • Je viens d'essayer avec  @promotion_type.intValue == %d,  mais ça ne fonctionne pas.


     


    Je pense que l'erreur doit venir d'ailleurs mais je ne vois pas de où.


  • FKDEVFKDEV Membre
    novembre 2015 modifié #9
    T'as essayé avec un predicate à  @true ?
  • Les valeurs dans tes objets ne seraient-ils pas à  nil ?


  • Merci à  tous.


     


    Effectivement les attributs de me objets étaient à  nil.


Connectez-vous ou Inscrivez-vous pour répondre.