2010-07-23 7 views
30

Il mio progetto ha più destinazioni. Ogni obiettivo ha il proprio file Class per l'impostazione di materiale. Voglio memorizzare il nome di Class in un'impostazione di destinazione (Info.plist o l'impostazione di Target's Building). In modo che io possa definire quale classe devo usare in ciascun target in base a questa impostazione.iphone: ottieni la variabile definita dall'utente nell'impostazione di Target in base al codice?

In base a this question, ho inserito "una variabile User Defined specifica di destinazione" in ciascuna impostazione di destinazione.

Ma non so come recuperarlo nel mio codice?

+0

che prendono di mira impostazione vuoi dire? Le impostazioni di compilazione? Info.plist? Dove hai impostato la variabile? – tonklon

+0

L'ho messo nelle impostazioni di generazione del bersaglio. – KONG

risposta

65

Come il file Info.plist viene pre-elaborato troppo, è possibile utilizzare questo approccio:

definire un'impostazione definita dall'utente nelle impostazioni di generazione , per esempio CLASS_NAME. E una chiave per il tuo file Info.plist. Assegna un nome alla chiave CLASS_NAME e imposta il valore su ${CLASS_NAME}.

È quindi possibile accedere a questa impostazione:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"]; 
9

Non è possibile utilizzare direttamente una variabile definita nelle impostazioni di compilazione. Queste variabili sono pensate per essere utilizzate dagli strumenti di costruzione.

Definire invece una macro del preprocessore nella variabile Macro preprocessore come "MYVAR = 5". È possibile accedere a queste macro nel codice come:

#if MYVAR==5 
    //Do something 
#endif 

Si prega di notare, che la valutazione di queste espressioni avviene in accumulo di tempo non in fase di esecuzione.

È molto tipico utilizzare solo una macro per definire il valore. Ad esempio, definire "DEBUG = 1" nelle impostazioni di compilazione del debug e "RELEASE = 1" nelle impostazioni di generazione del rilascio.

Sarà quindi possibile testare utilizzando #ifdef o #ifndef

#ifdef DEBUG 
    // Log 
#endif 
+0

Oh, capisco. Che ne dici di Info.plist. Posso memorizzare il nome di 'Class' lì e ottenerlo dal codice? – KONG

+0

Ho aggiunto un'altra risposta, per sapere come usare info.plist. – tonklon

+4

Se ho capito bene, non c'è modo di recuperare direttamente il valore delle impostazioni di compilazione? Perché per i segreti e le chiavi (che cambiano per configurazione) sarebbe meglio non passare attraverso Plist. – Rivera

Problemi correlati