2009-09-14 7 views
1

Je DEFINE:Valeur #define dans stringFormat?

hashdefine kPingServerToSeeIfInternetIsOn "http://10.0.0.8" 

puis dans le code I avec l'utiliser:

NSString *theURL = [NSString stringWithFormat:@"%@", kPingServerToSeeIfInternetIsOn]; 

je reçois une exception.

Quelle est la meilleure façon de définir le const pour l'application et de l'utiliser dans un init NSString?

+0

Par ailleurs, vous pouvez simplifier ce code particulier avec quelque chose comme "NSString * Theurl = kPingServerToSeeIfInternetIsOn;" ou encore plus simplement, mais en remplaçant toute référence à l'URL avec kPingServerToSeeIfInternetIsOn. – Tyler

Répondre

2

Créez un fichier d'en-tête, par ex. MyAppConstants.h. Ajouter ce qui suit:

extern NSString * const kPingServerToSeeIfInternetIsOn; 

Dans la définition, par ex. MyAppConstants.m, ajouter:

NSString * const kPingServerToSeeIfInternetIsOn = @"http://10.0.0.8"; 

Dans votre implémentation de la classe, ajoutez:

#import "MyAppConstants.h" 

Vous pouvez utiliser la constante que vous avez déjà fait.

+3

Bien que je suis entièrement d'accord avec l'utilisation de consts plutôt que de définir, je suis fortement en désaccord avec la création d'un fichier comme "MyAppConstants.h". Cela rend le code-réutilisation très difficile. Mettez des constantes dans les fichiers qui les fournissent logiquement, ou au moins dans le fichier qui les utilise. Mais ne créez pas de décharge centrale pour toutes les constantes du système. –

+0

Il existe une place pour avoir des constantes dans le même fichier que la classe. Mais je trouve que mes constantes ne sont indiquées que dans quelques fichiers d'en-tête (organisés par une fonction de code plus grande), ce qui rend mon dépannage beaucoup plus facile. Ce n'est pas drôle de les traquer ou de refactoriser un tas d'entre eux de différents endroits. À tout le moins, développez un schéma de nommage cohérent et informatif pour vos constantes et respectez-le comme de la colle. –

9

Vous l'avez défini comme une chaîne C.

Si vous voulez comme Objective-C String, vous devez

#define kPingServerToSeeIfInternetIsOn @"http://10.0.0.8" 
Questions connexes