2010-02-16 5 views
14

Sto cercando di trovare un modo per semplificare il passaggio dei nostri servizi di dati "finti" e di quelli in tempo reale. Fondamentalmente, avremo server live con servizi web reali, ma per qualsiasi motivo, uno sviluppatore potrebbe voler caricare dati da file statici (file URL).Xcode: consente di escludere i file in una configurazione personalizzata, in modo migliore?

Ho pensato di risolvere questo problema creando categorie che sovrascrivano i metodi che recuperano i dati, lasciando intatto il codice originale (non ha alcun concetto di dati "fittizi"). Non voglio sporcare il mio codice con #ifdef.

Posso mettere un #ifdef all'inizio di ogni file che contiene delle categorie e posso impostare un flag personalizzato nelle impostazioni di configurazione, ma preferirei avere un modo per includere o escludere i file a seconda della configurazione. È possibile? Come risolvi questo problema?

risposta

31

Vedi http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

Il trucco è quello di definire EXCLUDED_SOURCE_FILE_NAMES nella configurazione che si desidera escludere i file da e impostare il valore di questa impostazione per un elenco dei nomi di file di generazione personalizzata (o un modello che corrisponde quelli e solo quelli, nomi di file).

+7

Bingo. Assicurati di documentarlo attentamente, poiché è qualcosa che non è affatto ovvio per qualcuno che non ha familiarità con XCode a quel livello di dettaglio. E nota che INCLUDED_SOURCE_FILE_NAMES sostituisce EXCLUDED_SOURCE_FILE_NAMES. –

+0

Grazie! E 'stato molto utile! – RPM

+0

Solo un suggerimento: è possibile utilizzare i caratteri jolly per i nomi dei file. – Awsed

1

Suggerirei di creare due target uno dei quali ha le categorie fittizie incluse e un altro che non lo fa.

Quando si desidera eseguire il test, è sufficiente creare il target contenente le categorie di simulazione. Tutto il resto può rimanere identico.

+0

Puoi basarti sull'obiettivo su un altro? Mi preoccupo che le persone si dimentichino di aggiungere nuovi file a entrambi (o più) obiettivi. Inoltre, stiamo già utilizzando obiettivi per qualcos'altro (iPad vs iPhone) - idee? –

+0

Penso che il suggerimento di cdespinosa di personalizzare gli script di compilazione sia l'unico modo per renderlo 'automatico' in un certo senso. Se si utilizza una convenzione di denominazione per i file, uno script dovrebbe essere in grado di includerli o escluderli. Tuttavia, ad un certo punto del tuo processo dovresti sempre avere un passaggio manuale che indichi a Xcode quali file devono andare in quale target. Il linker non può leggere la tua mente. ;-) – TechZen

1

Se si desidera aggiungere un file ma non è necessario compilarlo. Vai a (per tutti i tuoi obiettivi) progetto> costruisci fasi> compila fonte ed estrai il file che non vuoi compilare.

Problemi correlati