Spostamento di file in una cartella reale in Xcode


177

Quando ho iniziato il mio progetto, ero felice di usare Gruppi in Xcode piuttosto che cartelle letterali: dato che sto usando il browser in Xcode per accedere a tutto, le cose erano ben organizzate ed ero felice.

Tuttavia, ora che il progetto sta per essere condiviso per il controllo della versione, la cartella del progetto stesso è uno spettacolo horror per coloro che cercano di scansionarlo tramite un terminale, circa 300 file, di cui oltre la metà sono grafici.

Sto cercando di riorganizzare le cose, creando cartelle reali e importandole in Xcode. Sfortunatamente Xcode non mi permette di lavorare con loro come fa con i gruppi. Ad esempio, se faccio clic con il pulsante destro del mouse su una cartella aggiunta effettiva (blu, non gialla) e scelgo di aggiungere file esistenti, in realtà non li inserisce in quella cartella, li mette nella sua radice.

Allo stesso modo, non riesco a spostare un file da una finta cartella (un gruppo) in una cartella reale: Xcode non considera le cartelle reali come luoghi validi in cui spostare le cose.

Cosa mi sto perdendo? Come posso convincere Xcode a farmi usare le cartelle come uso i gruppi? C'è una risposta qui a una domanda un po 'simile , ma in realtà non risolve il mio problema dal momento che sto lavorando con file esistenti.

Risposte:


176

Un approccio moderno (e assolutamente semplice!) Per il 2017 (Xcode 6, 7, 8 e talvolta 9, dal momento che lo fa automagicamente qualche volta):

Se stai spostando un sacco di file in una nuova cartella e stai mantenendo la gerarchia figlio, in realtà è molto più facile che spostare ogni file singolarmente:

  1. Crea nuovi gruppi nell'albero delle cartelle Xcode e organizza i tuoi file come preferisci.
  2. Crea un albero di cartelle fisiche corrispondente in Finder e organizza i tuoi file fisici in modo che corrispondano a quelli che hai fatto nel passaggio 1.
  3. Tutti i riferimenti in Xcode ora dovrebbero essere rossi (va bene!).
  4. Dal gestore Identità e Tipo, seleziona il Gruppo in Xcode che desideri spostare, quindi fai clic sull'icona della cartella dal riquadro informazioni:

  5. Nella finestra di dialogo Selezione del Finder, individuare la nuova cartella equivalente creata per questo gruppo nel passaggio 2. Tutti i file all'interno di quel gruppo verranno ora automaticamente riscoperti!

Non è carino? Al massimo dovrai ripetere questi 5 passaggi una volta per ogni nuovo gruppo che hai creato (il che batte riposizionando ogni file singolarmente!)

Punti bonus!

Supponiamo che tu abbia accidentalmente rovinato la mossa e ora un gruppo di tuoi file è rosso e non può essere trovato: seleziona più file che sono rotti e usando la stessa icona della cartella nello screenshot dal passaggio 4, trova la cartella corretta che contiene questi file e risolveranno automaticamente i percorsi mancanti.


3
In questo modo, tuttavia, i file non vengono tracciati in Git. Ovviamente posso sempre leggere il file ma mi manca qualcosa?
SonnoNon

2
@jeraldo non sono sicuro di quale sapore di git stai usando ma non ho mai avuto quel problema. Tuttavia, puoi farlo facilmente git add ..
brandonscript

Mi manca qualcosa e non sono sicuro di cosa si tratti. Forse non capisco il significato delle parole "organizza i tuoi file in loro ..." nel passaggio (1) ?? Presumo che questo significhi "Aggiungi i file al gruppo trascinandoli o altro". Ma se lo faccio, ovviamente Xcode riconosce i file e non li mostra in rosso, come indicato nel passaggio (3). Hai idea di cosa sto facendo di sbagliato?
hkatz,

Hai spostato i file fisici come nel passaggio 2?
brandonscript il

1
Ah, l'ho capito! Il passaggio (2) è stato solo un po 'troppo enigmatico per me. Se lo stessi riscrivendo, direi qualcosa con l'effetto di "Crea un albero di cartelle fisiche corrispondente, quindi usa il comando Mostra nel Finder di Xcode per individuare i file aggiunti al nuovo gruppo nel passaggio (1) e spostare fisicamente quei file nella cartella che hai appena creato. " Qualcosa del genere ...
hkatz il

119

ULTERIORI EDIZIONI GIUGNO 2017: Xcode 9 lo fa automaticamente, senza particolari sforzi. Questa risposta e Brandon si applicano solo a Xcode 8 e precedenti.

MODIFICATO DICEMBRE 2016: la risposta di Brandon di seguito è una soluzione migliore ora. Quando questa risposta è stata creata nel 2010, questa è stata l'unica opzione che ho trovato. Ora suggerisco la risposta di Brandon , di seguito.


Si scopre che lo spostamento di file in cartelle reali è certamente possibile, sebbene non così semplice come dovrebbe essere.

Ho ricevuto le informazioni di base da una domanda qui, Xcode organizza file e cartelle (oggetti modello dati core - iPhone) , ma lungo la strada ho imparato cose importanti.

Il processo

Lo spostamento dei file è un processo in due passaggi con più passaggi secondari:

  1. Di 'a Xcode dove vuoi che siano i file :

    • Fai clic con il tasto destro / Ctrl sul file o gruppo di file che desideri spostare e scegli Ottieni informazioni dal menu contestuale che appare. Le informazioni sul gruppo o Info file viene visualizzata la finestra.

    • Fai clic sul pulsante Scegli sull'estrema destra della finestra nell'area Percorso . Viene visualizzata una finestra di dialogo.

    • Passare alla cartella in cui si desidera spostare i file. Crea una nuova cartella, se necessario. Fai clic sul pulsante Scegli nell'angolo in basso a destra della finestra di dialogo, quindi chiudi la finestra Informazioni gruppo / Informazioni file .

    • I nomi dei file nel gruppo diventeranno rossi per indicare che Xcode non può trovarli nel luogo specificato.

  2. Sposta i file effettivi

    • Nel Finder (o Git) sposta i file selezionati nel passaggio 1 nelle cartelle effettive in cui li desideri.

    • Torna a Xcode. I file / i gruppi dovrebbero essere nuovamente diventati neri. Se qualcuno è ancora rosso, ti sei perso spostando qualcosa nella cartella giusta.

Suggerimenti

Ho imparato un paio di cose importanti durante la regolazione dei ~ 300 file in questo progetto:

  • Alcuni file si rifiutano di spostarsi in questo modo; cioè, quando si naviga verso la nuova destinazione, il pulsante Scegli è disabilitato, così come il pulsante Nuova cartella . La soluzione, anche se non so perché faccia la differenza, è innanzitutto utilizzare Xcode per mettere quei file in un gruppo (fare clic con il tasto destro del mouse sui file e selezionare Gruppo , quindi assegnare un nome al gruppo) e quindi spostare il gruppo nella nuova posizione. Dopo aver effettivamente spostato i file nel Finder, puoi rimuoverli dal gruppo (trascinandoli nel nuovo gruppo / cartella genitore ed eliminando il gruppo).

  • Arresta e compila ogni pochi minuti, dopo aver completato il passaggio 2 per un numero di file. La build ti dirà se hai rovinato qualcosa finora, rendendo più semplice tornare indietro e risolverlo prima di aver fatto troppi danni.

  • Se i file non si sposteranno dove vuoi - ho avuto un diavolo di tempo spostando alcuni file che erano stati creati all'inizio nella cartella Classi - puoi semplicemente trascinarli fuori dal loro vecchio posto nel finder per in un posto a portata di mano come il desktop, eliminare i riferimenti ad essi in Xcode e quindi reimportarli tramite l' opzione destra / control-clic su Aggiungi file esistenti .

  • Se in passato hai usato Xcode per eliminare i riferimenti ai file senza spostarli nel cestino in questo progetto, troverai file che non devono essere spostati ma semplicemente seduti lì. Fai attenzione a non fare ciò che ho fatto, confondendo i nomi di un gruppo corrente di file che stavo spostando e i file più vecchi, non più collegati, insistendo sul fatto che Xcode li importa perché pensavi che fosse denso.

Spero che questo aiuti qualche persona futura. Sono sorpreso che sia stato difficile e occasionalmente complicato come lo era.


2
Avere tutti i file nella stessa directory mi dava davvero fastidio. Grazie per questo!
Curtis Shipley,

puoi anche: riorganizzare la struttura delle directory a piacimento nel Finder, rimuovere tutti i "file rossi" nel progetto, quindi aggiungerli nuovamente al progetto usando l'opzione "raggruppa in cartelle"
bshirley

@bshirley Molto vero, e se tutti i file nella directory principale devono essere nel progetto, ciò può far risparmiare molto tempo. Sfortunatamente con progetti che coinvolgono più persone o che hanno avuto molte versioni nel tempo, ci possono essere un numero qualsiasi di file che non dovrebbero essere aggiunti al progetto. In tal caso dovresti tenere traccia di quelli che hai rimosso per ripristinarli o qualcosa di simile.
Matthew Frederick,

11
in xcode 4 ho dovuto fare qualcosa di diverso - non ho visto alcun link contestuale "ottieni informazioni" quando ho cliccato col tasto destro. invece ho dovuto visualizzare l'identità e il tipo di visualizzazione (probabilmente un nome per questo che non conosco). è il pulsante più a destra nelle opzioni di visualizzazione nella barra dell'intestazione xcode4. sposto prima il file sul filesystem, quindi faccio clic sulla strana icona accanto al percorso e dico a xcode dove si trova il nuovo file.
Evan Pon,

6
Il problema con lo spostamento dei file è che quando è già sotto il controllo SVN, devi assicurarti di usare un'app come Versions o Cornerstone per spostare i file in giro ... O finirai con terribili problemi di controllo della versione! Vorrei che Apple
buttasse

104

In Xcode 5 o Xcode 6:

  1. Crea le cartelle associate ai tuoi gruppi nel Finder
  2. Sposta i file in quelle cartelle nel Finder
  3. Seleziona ogni file rosso nella barra laterale Xcode a sinistra
  4. Fai clic sul pulsante "Mostra / Nascondi utilità" per visualizzare la barra laterale destra (vedi figura)
  5. In "Identità e tipo", fai clic sul piccolo pulsante e seleziona la posizione del file (vedi figura)

inserisci qui la descrizione dell'immagine

Saluti.


1
Nota per alcuni utenti, se ricevi un errore per il fatto che sono state apportate modifiche dopo che le informazioni di intestazione sono state precompilate, fai semplicemente una pulizia del prodotto e le cose funzioneranno!
quantum

Ho seguito questo approccio in Xcode 5.1.1 per spostare un file di intestazione in una cartella fisica. Sono in grado di spostare il file. Ma Xcode dice "file non trovato" durante la creazione del progetto. Potresti per favore aiutare.
Rashmi Ranjan mallick

22

Ho trovato il modo più affidabile per aggirare il design spaventoso di XCode qui è organizzare TUTTI i tuoi file in Finder, per due motivi:

  1. Il Finder non fa "errori", a differenza della GUI di XCode
  2. Una volta che le cose sono organizzate nel Finder, puoi trascinare / rilasciare intere cartelle del Finder in XCode e ... fa esattamente quello che volevi, senza sforzo

Anche quando si spostano file XCode esistenti, è più veloce eseguire questa operazione:

  1. Seleziona i file nel Finder
  2. Crea una cartella nel Finder per loro
  3. Trascinali / rilasciali nella cartella (li sposta automaticamente)
  4. Trascina / rilascia la cartella Finder in Xcode (automaticamente: crea la cartella Xcode, aggiunge tutti i file nella cartella Finder)
  5. cmd-seleziona ogni file "rosso" che ora vedi in Xcode (perché li hai spostati) e premi il tasto Canc

NB: Non ho mai usato l'opzione "crea cartelle trascinate con sottogruppi", perché in XCode 3 era spesso senza errori e poteva corrompere i progetti. Apple chiaramente (IMHO) NON utilizza questa funzionalità internamente, altrimenti non sarebbe mai stato permesso di essere così buggy; se Apple non usa nulla, generalmente non è nemmeno sicuro usarlo - non sono bravi a testare :)


2
Ci proverò domani .. questa era la soluzione semplice che stavo cercando. Perché l'hanno reso così difficile? Se avesse semplicemente rispecchiato il file system sarebbe stato molto meno confuso. Grazie!
delux247,

Questa è stata la quarta soluzione che ho provato e l'UNICA che ho potuto lavorare con xcode 5.1.1. Inoltre, per qualche motivo questo non funzionerebbe per nessuna delle mie categorie. Ho dovuto letteralmente spostarli nel Cestino, rimuoverli dal Cestino, quindi aggiungerli nuovamente a Xcode e alla fine ha funzionato.
user3344977

21

Esiste un semplice strumento di riga di comando da configurare e utilizzare : "synx" disponibile in github che fa esattamente ciò che è necessario qui.

Riorganizza la cartella del progetto Xcode nel finder in modo che corrisponda ai gruppi Xcode nel progetto.

Puoi trovarlo qui: https://github.com/venmo/synx

AGGIORNAMENTO: XCode 9 supporta questa funzione per impostazione predefinita. Quindi, non è più necessario utilizzare altri strumenti!


Ottimo strumento ma diventa estremamente lento nei progetti più grandi (potrebbe richiedere alcuni minuti per completare il lavoro) e sembra non essere più supportato.
Lukasz,

6

Xcode 9

Sembra che Xcode 9 ora lo supporti per impostazione predefinita. Quando si spostano i file da un gruppo a un altro, il file verrà anche spostato dalla vecchia cartella alla nuova cartella. Lo ha annunciato il WWDC 2017.



2

Di solito sposto i file nella directory direttamente nel Finder, quindi aggiusto i file con nomi di colore rosso in XCode nella finestra di dialogo "Ottieni informazioni": fai clic sul pulsante "Scegli ..." e seleziona la nuova posizione del file. Questa è la prima risposta quando voglio spostare i file in XCode e funziona.


1

A partire da Xcode 4.5 quando si trascina in una struttura di cartelle, questo viene automaticamente trasformato in gruppi nidificati in Project Navigator. Quindi, se guardi sul disco (ad esempio, fai clic con il pulsante destro del mouse e scegli Mostra nel Finder), la struttura delle cartelle è stata mantenuta.

Ho scoperto che provare a riparare le cose da un vecchio progetto era solo una seccatura. È risultato molto più semplice eliminare questi file e trascinarli nuovamente.


1

Per spostare una cartella in xcode 4.5 ho solo ...

  1. Elimina i file / gruppi da xcode e seleziona "Rimuovi riferimento".
  2. Vai in finder e sposta la cartella / i file secondo necessità.
  3. Una volta fatto torno in Xcode e scelgo File-> Aggiungi file a {ProjectName}.
  4. Assicurati che "Copia elementi nella cartella Gruppo di destinazione (se necessario)" sia selezionato
  5. Assicurati che "Crea gruppo per qualsiasi cartella aggiunta" sia selezionato
  6. Assicurati che "Aggiungi a destinazione" sia selezionato per il tuo progetto

1

La tecnica più semplice per XCode 8 ....

Supponendo che tu abbia i file A, B, C in un gruppo logico, ma desideri che vengano spostati in una cartella sul tuo disco rigido.

  1. Crea una cartella di destinazione tramite Finder
  2. Aggiungi la cartella in XCode (File -> Aggiungi file) usando il riquadro Opzioni per selezionare un riferimento alla cartella (non un gruppo)
  3. Trascina i file A, B, C dal (vecchio) gruppo alla (nuova) cartella di riferimento nel navigatore del progetto. XCode sposta i file nella cartella, sia nel progetto, sia sul disco.

Fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.