Creation de profil comme pour les langues

yodarkyodark Membre
14:39 modifié dans API AppKit #1
Bonjour,

petite question je voudrais pouvoir creer des profils pour mon application un peu comme pour les langues ou chaque langue a son localisable.string
Je voudrais avoir des variables qui ont une valeur différente si je suis par exemple developpeur beta testeur ou utilisateur. Par exemple une image différente est chargée selon si beta testeur ou utilisateur final

Je sais pas si j'ai été clair ?

Réponses

  • schlumschlum Membre
    14:39 modifié #2
    Les macros sont tes amies  ;)

    Dans les options de compilation, c'est ce qui correspond à  -D
    Ensuite, il faut jouer de #ifdef ou #if defined()
  • AliGatorAliGator Membre, Modérateur
    14:39 modifié #3
    Oui tiens j'aurais pas pensé répondre par la solution des macros, pourtant c'est en effet tout à  fait indiqué.
    On peut aussi avoir (c'est l'analogie avec localisable.strings qui m'y a fait penser bien sûr) un fichier de chaà®nes différent selon le cas.

    Par exemple on peut avoir un "developper.strings", "betatester.strings" et "user.strings" et dans chacun de ces fichiers tu mets les valeurs de tes chaà®nes (nom des images à  utiliser pour tel ou tel truc, message à  afficher dans tel ou tel cas, ...).
    Ensuite, au début de ton code (dans ton "..._Prefix.pch" par exemple ?), tu peux mettre un truc comme :
    #define kUserTypeTable @"developper"
    
    que tu pourras changer en [tt]@betatester[/tt] ou [tt]@user[/tt] selon la table à  utiliser pour cette compilation.
    Enfin, pour utiliser une chaà®ne qui dépend du type de user, et donc va piocher la valeur/NSString dans le bon fichier ".strings", tu pourras faire :
    NSString* texte = NSLocalizedStringFromTable(@&quot;unTexte&quot;, kUserTypeTable, @&quot;some text to display&quot;);<br />NSString* imgName = NSLocalizedStringFromTable(@&quot;logo&quot;, kUserTypeTable, @&quot;the logo to use depending on if the user is a developer, betatester or simple user&quot;);<br />NSImage* img = [NSImage imageNamed:imgName]; // tu obtiens ici l&#39;image selon le type de user
    
    Voilà  pour le principe.

    L'avantage de cette méthode c'est que tu groupes tout ce qui est dépendant du type de user dans un fichier séparé (un .strings par type d'utilisateur) et tu charges le bon fichier .strings selon le cas. Alors que sinon tu vas mettre des #if...#else...#endif un peu partout dans ton code pour chacune des valeurs différentes dépendant du type de user.
    En même temps rien n'empêche le bidouilleur d'inverser les fichiers .strings dans ton bundle pour se faire passer pour un betatesteur au lieu d'un simple user, mais bon ça te simplifie le codage. Ou alors tu n'inclues que le bon fichier ".strings" dans les ressources de ton appli finale selon le type d'utilisateur;
Connectez-vous ou Inscrivez-vous pour répondre.