Valeur null dans un dictionnaire

olofolof Membre
13:01 modifié dans API AppKit #1
Salut à  tous,

j'ai une variable qui contient un NSDictionary. Si j'affiche sont contenu (mode debug, 'Print Description to Console', j'obtient ça :

Printing description of cellValues:
<CFDictionary 0x14e21d90 [0xa038d1a0]>{type = immutable, count = 5, capacity = 6, pairs = (
0 : <CFString 0x60a0 [0xa038d1a0]>{contents = "titre"} = <CFString 0x191ae0 [0xa038d1a0]>{contents = "Flickr"}
3 : <CFString 0x6070 [0xa038d1a0]>{contents = "dateEcheance"} = <CFNull 0xa038d020 [0xa038d1a0]>
4 : <CFString 0x6060 [0xa038d1a0]>{contents = "dateTermine"} = <CFNull 0xa038d020 [0xa038d1a0]>
6 : <CFString 0x6080 [0xa038d1a0]>{contents = "isTermine"} = <CFNumber 0x1113d0 [0xa038d1a0]>{value = +1, type = kCFNumberSInt32Type}
7 : <CFString 0x6090 [0xa038d1a0]>{contents = "priorite"} = <CFNumber 0x1203d0 [0xa038d1a0]>{value = +9, type = kCFNumberSInt32Type}
)}

Après, je lis le contenu de la clé 'dateTermine'. Dans le debugger, la valeur affichée est <null>. Comment faire pour tester ce null ?

J'ai fait :

if (dateTermine != kCFNull) {<br />

Ca fonctionne, mais j'ai le warning suivant à  la compilation :

warning: comparison of distinct pointer types lacks a cast

Comment faire mon test sans avoir ce warning ?

Merci !

Réponses

  • fouffouf Membre
    13:01 modifié #2
    Dans ton dictionnaire, c'est [NSNull null] qui est enregistré (d'où la même adresse pour les objets "dateEcheance" et "dateTermine".
    Donc le test que tu as à  faire c'est dateTermine == [NSNull null]

  • olofolof Membre
    13:01 modifié #3
    dans 1219564268:

    Dans ton dictionnaire, c'est [NSNull null] qui est enregistré (d'où la même adresse pour les objets "dateEcheance" et "dateTermine".
    Donc le test que tu as à  faire c'est dateTermine == [NSNull null]


    Ca me donne toujours le même warning...

    Je ne sais pas si ça a une quelconque importance, mais j'affecte la valeur à  dateTermine de la manière suivante :

    NSDate *dateTermine = [cellValues valueForKey:@&quot;dateTermine&quot;];<br />
    

  • Philippe49Philippe49 Membre
    13:01 modifié #4
    Un essai :

    #import <Foundation/Foundation.h>

    int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
    NSDictionary * dictionary=[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInteger:10],@first, [NSNull null],@second,nil];
    if([dictionary objectForKey:@second] ==[NSNull null]) NSLog(@Ok);
    NSLog(@%@",dictionary);
    [pool drain];
    return 0;
    }

    se fait sans Warning.


    dans 1219564582:

    Je ne sais pas si ça a une quelconque importance, mais j'affecte la valeur à  dateTermine de la manière suivante :
    NSDate *dateTermine = [cellValues valueForKey:@&quot;dateTermine&quot;];<br />
    


    Et avec  [cellValues objectForKey:@dateTermine] ?
  • olofolof Membre
    13:01 modifié #5
    Le warning est supprimé si je test le contenu du dictionnaire sans l'affecter à  une variable :
    if ([cellValues objectForKey:@&quot;dateTermine&quot;] != [NSNull null]) {<br />
    



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