2010-08-28 8 views
30

Sto cercando di capire come funziona l'organizzazione dei file Xcode, o non ce n'è. Posso fare tutto ciò che voglio nel progetto e sembra fantastico con tutte le cartelle e la struttura "finte". Vado a dare un'occhiata al file system e al boom HUGE. Ho provato a importare i file con l'opzione Create Folder Reference for any added folder selezionata e funziona, un po '. Prendo la struttura che voglio sia in Xcode che nel filesystem.Come dovrei organizzare i miei file di progetto Xcode?

Problemi: quando aggiungo un file a una cartella sul filesystem che è un riferimento di cartella in Xcode, non è in Xcode quando vado a cercare, nemmeno dopo aver ricaricato il progetto. I file/sottocartelle in una cartella di riferimento non possono essere spostati in Xcode. Quando li sposto sul filesystem ottengo dei collegamenti rossi (non riesci a trovare il file?) In Xcode.

Come mantenere un file system organizzato e? Come posso impostare un progetto per riconoscere solo una cartella e mostrare i suoi file e sottocartelle (attuali e aggiornati) nel mio progetto?

Un altro problema in cui mi sembra di imbattersi, se utilizzo un riferimento alla cartella e cambio un file, il file non viene aggiornato nella mia applicazione a meno che non riesca a ricostruire completamente la ricostruzione &. Se non utilizzo un riferimento cartella, tutti i i miei file vengono scaricati nella cartella risorse del pacchetto di applicazioni, non nella struttura piacevole che ho nel mio progetto.

Dovrei preoccuparmi del tutto? Devo solo usare le cartelle false e lasciare che tutto vada ovunque e non importa? Il mio pacchetto di applicazioni sarà un disastro, il filesystem sarà un disastro, ma funzionerà tutto ... lo spero?

Edit:

Il mio più grande ragione per voler un filesystem organizzata è che i file di risorse (immagini, suoni, altre Datafiles, etc.) non vengono modificati in Xcode. Devo accedervi in ​​app di terze parti tramite il filesystem. Se è un casino, le cose sono più difficili da trovare e mantenere nelle altre applicazioni di terze parti.

anche cosa succede se voglio una struttura come le seguenti:

  • Immagini/Sfondi/Name.png
  • immagini/icone/Name.png
  • Immagini/Titoli/Name.png

Devo utilizzare nomi di file lunghi anziché cartelle per organizzarli?

  • Images_Backgrounds_Name.png
  • Images_Icons_Name.png
  • Images_Titles_Name.png
+0

Uno dei motivi per cui l'organizzazione del file system è importante è che il sistema di controllo della versione del codice sorgente sincronizza il file system. – Anand

+0

@Anand - True anche se Xcode ha git build in modo che sia anch'esso estratto. – Justin808

risposta

6

dovrei preoccuparmi a tutti? Devo solo usare le false cartelle e lasciare che tutto vada ovunque e non importa? Il mio pacchetto di applicazioni sarà un pasticcio , il filesystem sarà un disastro, ma funzionerà tutto ... Vorrei sperare?

IMO no ... :) fondamentalmente. Il punto è che XCode è stato progettato per offrire la migliore esperienza di programmazione.Se Apple volesse che organizzassi fisicamente tutti i tuoi file e cartelle all'interno del filesystem reale, allora avrebbero fatto in quel modo.

Non capisco davvero perché vorreste organizzare tutti i file e le cartelle in questo modo comunque? Non fa alcuna differenza per il funzionamento dell'applicazione e le "false" cartelle (gruppi) in XCode forniscono adeguatamente l'aiuto visivo necessario per te stesso (e altri) per navigare attraverso le tue classi e altre risorse. Organizzarlo correttamente nel tuo filesystem (come hai trovato) rende sicuramente le cose più difficili?

+2

Vedere la mia modifica sopra per il mio ragionamento. Sfortunatamente, sto vedendo se voglio usare XCode, devo solo dire F e gestire l'organizzazione del filesystem FUBARed. Se voglio svilupparmi per il Mac, ho bisogno di usare XCode quindi, mi occuperò, suppongo ... va proprio contro i miei 20 anni di programmazione per lasciare una cartella di progetto un enorme casino. – Justin808

+0

lol ... beh, le volte cambiano (come diceva Bob Dylan).Il mio background è lo sviluppo web in cui tutte le immagini sono nella cartella delle immagini e si dispone di un file psd separato e si salva nella cartella delle immagini quando si desidera utilizzare un'immagine, quindi ecco cosa suggerisco di fare: avere 'Sviluppo/MyAppProject' che ha '/ MyAppProject' e'/MyAppProjectResources' in esso. In MyAppProjectResources hai il tuo filesystem strutturato di PSD e XML e qualsiasi altra cosa e quando si tratta di usarli nella tua app accattivante puoi salvare nella cartella '/ MyAppProject' o trascinare i file risultanti. –

+3

Il motivo per cui si desidera organizzare i file è perché qualsiasi strumento esterno - Git o Fireworks, diciamo - utilizza il file system. –

6

OK, ecco come funziona:

Xcode non conosce alcun file fino a quando gli si dice su di loro. Cioè, anche se si aggiunge manualmente un file nel finder (solitamente una cattiva idea) a una cartella che contiene file in un progetto Xcode, non ne viene a conoscenza finché non si "aggiunge il file esistente al progetto".

La procedura consigliata (imo) per aggiungere un file esistente (o un gruppo di file) a un progetto (ad esempio, codice appena scaricato) è di scegliere "aggiungi file esistenti" e quindi "copia elementi nella cartella del gruppo di destinazione" (se necessario) "nella finestra di dialogo successiva, se vuoi che il tuo progetto abbia una copia dei file in questione, piuttosto che un semplice riferimento a loro (ci sono vantaggi e svantaggi di entrambi).

Non preoccuparti troppo della denominazione delle cartelle in Xcode o di dove si mettono le cose, ma cerca di mantenere uno standard che abbia senso nel tuo ambiente. Ad esempio, inserisco sempre le classi che scrivo in "Classi" e ho cartelle separate per qualsiasi codice di libreria che ho scaricato per l'utilizzo nel progetto. Metto sempre le immagini/icone/audio ecc in "Risorse".

In breve, se ti piace quello che c'è nella cartella del progetto in circa lo stesso di quello che c'è nel tuo progetto, aggiungere sempre i file esistenti, scegliendo le "voci Copia nella cartella del gruppo di destinazione"

La flessibilità nella XCode è intenzionale. Spetta a te decidere come ti piace organizzare le cose.

+5

hmm .. quello che chiami flessibilità in XCode, lo vedo come un bug importante. Perché dovrei voler organizzare le cose nel progetto in 1 modo ed essere, IMO, completamente FALCATO sul filesystem? La ** copia gli elementi nella cartella del gruppo di destinazione ** non fa nulla per mantenere i file organizzati all'interno della cartella dei progetti sul filesystem, copia semplicemente un file che viene aggiunto dall'esterno del progetto al grande pasticcio della cartella del progetto. – Justin808

+0

Ricordarsi di presentare una segnalazione di bug a riguardo. Non cambierà se non ti lamenti con le persone giuste. –

1

Sarebbe bello se Xcode potesse mantenere se stesso e il file system in sincrono. Sfortunatamente no. Una ragione per volerlo è che la gerarchia nel tuo SCCS corrisponda a quella di Xcode.

Torna indietro per mantenere le cose organizzate in Xcode e lasciare il file system separato in non più di "Classi" e "Risorse".

16

Desidero anche che Xcode mantenga automaticamente se stesso e il file system sincronizzati.

Tanto che ho trascorso un'ora a farlo manualmente per un progetto chiamato acani-iphone on GitHub. Fondamentalmente, ho spostato alcuni dei file usando Finder, creando nuove cartelle come mi pareva. Poi, sono tornato su Xcode e ho visto che i file che avevo appena spostato erano ora rossi (perché Xcode stava pensando che erano da dove li ho spostati e quindi non sono riuscito a trovarli).

AGGIORNAMENTO: ho appena capito che avrei potuto semplicemente fare clic sul gruppo o sul file rosso, ho premuto CMD + i (Ottieni informazioni dal menu di scelta rapida, che puoi aprire facendo clic con il tasto destro del mouse sul file rosso o gruppo), e sotto la scheda Generale, fatto clic su Scegli, quindi trovato dove ho spostato il file nel file system. Ma non l'ho fatto, ecco cosa ho fatto invece, che funziona anche:

Quindi, ho appena evidenziato tutti i file rossi in Xcode e premuto command + delete per eliminare i riferimenti (rossi) guasti. Quindi, ho fatto clic con il pulsante destro del mouse sul gruppo in cui desideravo aggiungere i file (di solito lo stesso gruppo) e ho fatto clic su Add>Existing Files....Quindi, ho trovato gli stessi file nel nuovo spot sul file system. Ho tenuto "Copia elementi nella cartella del gruppo di destinazione (se necessario)" deselezionata, ho controllato il pulsante di opzione "Crea gruppi in modo ricorsivo per eventuali cartelle aggiunte" e ho controllato l'aggiunta a Acani di destinazione se i file che stavo aggiungendo venivano utilizzati per creare il app per iPhone acani.

Ho eseguito la procedura sopra descritta come una directory di file alla volta. Alcune volte ero più aggressivo, aggiungendo più directory alla volta, poiché selezionavo quasi sempre il pulsante di opzione "Crea gruppi in modo ricorsivo per qualsiasi cartella aggiunta".

ho scoperto che i file acani_Prefix.pch e acani-Info.plist dovevano rimanere nella directory root file system (anche se ci possono essere le impostazioni è possibile impostare per permettere a questi file di essere altrove, come penso che è possibile aggiungere una riga al acani-Info.plist così che puoi spostare/rinominare acani_Prefix.pch, ma io sto bene con loro nella directory radice sul file system

Che era fastidioso da fare, e forse nemmeno vale la pena, forse procrastinazione, ma andando avanti, prima aggiungendo file esistenti a Xcode, prima assicurarmi che si trovino nel posto in cui voglio che si trovino nel file system.

0

What I d o è creare un gruppo per rappresentare ogni cartella e quindi, prima di aggiungere file ad esso, nel pannello di destra, prima scheda, immediatamente sotto "Percorso", c'è un'icona che consente di scegliere la cartella. Nella finestra di dialogo della cartella, creo una cartella che corrisponde al gruppo e la scelgo.

In xcode3, questo ha portato a nuove e aggiunte finestre di dialogo file che iniziano in questo percorso. Ne è valsa la pena lo sforzo. Xcode4, tuttavia, non rispetta questa impostazione. Pertanto, è discutibile se ci sia un valore reale in esso. Desidero anche che XCOde supporti un'organizzazione di file system migliore.

Considerando che i nomi dei file devono essere univoci all'interno di un progetto, indipendentemente dai gruppi e dalle cartelle, è giustificato accettare la struttura della cartella flat e utilizzare i gruppi per comodità IDE. È difficile venire da altre piattaforme in cui questo è disapprovato.

+0

Mentre posso essere d'accordo sul fatto che questo approccio sembra risolvere il problema per un singolo sviluppatore, penso che risulterebbe in una base di codice meno organizzata tra un gruppo di sviluppatori. Quando lavori con altre persone, è importante avere uno standard. Nella mia esperienza, lo standard migliore è quello che coinvolge il minor numero di passaggi. – jacobsimeon

0

mi sento e personalmente non posso NON preoccuparsi della struttura attuale e solo fare affidamento su spazi di lavoro.

quello che sarebbe veramente grande è uno strumento che andrà oltre la struttura dello spazio di lavoro e riorganizzare il file system di conseguenza, avendo cura di qualsiasi rinominazione di cartelle ecc. Questa sarebbe una soluzione classica e IMHO dovrebbe essere implementato come opzione, mentre riorganizziamo il nostro progetto mentre ci muoviamo.

alcuni problemi potrebbero essere il controllo del codice sorgente sebbene xcode4 funzioni con git e SVN.

2

Utilizzare Synx.

Riorganizza i file su disco in modo che corrispondano ai gruppi Xcode. Cerco di eseguirlo prima di commettere qualsiasi codice che modifichi i gruppi Xcode e mantiene il progetto bello e ordinato.