Verschieben von Dateien in einen echten Ordner in Xcode


177

Als ich mein Projekt startete, war ich froh, Gruppen in Xcode anstelle von wörtlichen Ordnern zu verwenden: Da ich den Browser in Xcode verwende, um auf alles zuzugreifen, waren die Dinge gut organisiert und ich war glücklich.

Jetzt, da das Projekt für die Versionskontrolle freigegeben werden soll, ist der Projektordner selbst eine Horrorshow für diejenigen, die versuchen, es über ein Terminal zu scannen, etwa 300 Dateien, von denen mehr als die Hälfte Grafiken sind.

Ich versuche jetzt, Dinge neu zu organisieren, echte Ordner zu erstellen und sie in Xcode zu importieren. Leider lässt mich Xcode nicht so mit ihnen arbeiten wie mit Gruppen. Wenn ich beispielsweise mit der rechten Maustaste auf einen tatsächlich hinzugefügten Ordner (blau, nicht gelb) klicke und vorhandene Dateien hinzufüge, werden diese nicht in diesem Ordner abgelegt, sondern im Stammverzeichnis abgelegt.

Ebenso kann ich eine Datei nicht aus einem Faux-Ordner (einer Gruppe) in einen echten Ordner verschieben: Xcode betrachtet die realen Ordner nicht als gültige Orte, an die Inhalte verschoben werden können.

Was vermisse ich? Wie kann ich Xcode davon überzeugen, dass ich die Ordner so verwende, wie ich Gruppen verwende? Hier gibt es eine Antwort auf eine etwas ähnliche Frage , aber sie löst mein Problem nicht wirklich, da ich mit vorhandenen Dateien arbeite.

Antworten:


176

Ein moderner (und kinderleichter!) Ansatz für 2017 (Xcode 6, 7, 8 und manchmal 9, da dies manchmal automatisch geschieht):

Wenn Sie eine Reihe von Dateien in einen neuen Ordner verschieben und die untergeordnete Hierarchie beibehalten, ist dies viel einfacher, als jede Datei einzeln zu verschieben:

  1. Erstellen Sie neue Gruppen in der Xcode-Ordnerstruktur und organisieren Sie Ihre Dateien nach Belieben.
  2. Erstellen Sie im Finder einen passenden physischen Ordnerbaum und organisieren Sie Ihre physischen Dateien so, dass sie mit dem übereinstimmen, was Sie in Schritt 1 getan haben.
  3. Alle Referenzen in Xcode sollten jetzt rot sein (das ist in Ordnung!).
  4. Wählen Sie im Identitäts- und Typmanager die Gruppe in Xcode aus, die Sie verschieben möchten, und klicken Sie dann im Infobereich auf das Ordnersymbol:

  5. Suchen Sie im Finder-Auswahldialog den entsprechenden neuen Ordner, den Sie in Schritt 2 für diese Gruppe erstellt haben. Alle Dateien in dieser Gruppe werden jetzt automatisch wiederentdeckt!

Ist das nicht schön Sie müssen diese 5 Schritte höchstens einmal für jede neue Gruppe wiederholen, die Sie erstellt haben (was besser ist, als jede Datei einzeln zu verschieben!).

Bonuspunkte!

Angenommen, Sie haben den Umzug versehentlich vermasselt, und jetzt sind einige Ihrer Dateien rot und können nicht gefunden werden: Wählen Sie mehrere Dateien aus, die beschädigt sind, und suchen Sie mithilfe des gleichen Ordnersymbols im Screenshot aus Schritt 4 den richtigen Ordner, der diese enthält Dateien und sie werden automatisch die fehlenden Pfade auflösen.


3
Dadurch werden die Dateien in Git jedoch nicht mehr verfolgt. Natürlich kann ich die Datei immer lesen, aber fehlt mir etwas?
SleepNot

2
@ Jeraldo nicht sicher, welche Art von Git Sie verwenden, aber ich hatte nie dieses Problem. Sie können dies jedoch problemlos tun git add ..
Brandonscript

Mir fehlt etwas und ich bin mir nicht sicher, was es ist. Vielleicht verstehe ich die Bedeutung der Wörter "Organisieren Sie Ihre Dateien in ihnen ..." in Schritt (1) nicht? Ich gehe davon aus, dass dies "Hinzufügen der Dateien zur Gruppe per Drag & Drop oder was auch immer" bedeutet. Aber wenn ich das mache, erkennt Xcode die Dateien natürlich und zeigt sie nicht rot an, wie in Schritt (3) angegeben. Irgendeine Idee, was ich falsch mache?
Hkatz

Haben Sie die physischen Dateien wie in Schritt 2 verschoben?
Brandonscript

1
Ah, ich habe es herausgefunden! Schritt (2) war mir einfach etwas zu kryptisch. Wenn ich es umschreiben würde, würde ich etwas zum Effekt von "Erstellen eines passenden physischen Ordnerbaums" sagen. Verwenden Sie dann den Xcode-Befehl "Im Finder anzeigen", um die Dateien zu suchen, die Sie in Schritt (1) zur neuen Gruppe hinzugefügt haben, und verschieben Sie diese Dateien physisch in den Ordner, den Sie gerade erstellt haben. " So etwas in der Art ...
hkatz

119

WEITER BEARBEITETER JUNI 2017: Xcode 9 erledigt dies automatisch, ohne dass besondere Anstrengungen erforderlich sind. Diese und Brandons Antwort gelten nur für Xcode 8 und früher.

EDITED DEZEMBER 2016: Brandons Antwort unten ist jetzt eine bessere Lösung. Als diese Antwort 2010 erstellt wurde, war dies die einzige Option, die ich finden konnte. Ich schlage jetzt Brandons Antwort vor .


Es stellt sich heraus, dass das Verschieben von Dateien in echte Ordner sicherlich möglich ist, wenn auch nicht so einfach, wie es sein sollte.

Ich habe die grundlegenden Informationen aus einer Frage hier erhalten: Xcode organisiert Dateien und Ordner (Kerndatenmodellobjekte - iPhone) , habe aber dabei wichtige Dinge gelernt.

Der Prozess

Das Verschieben der Dateien erfolgt in zwei Schritten mit mehreren Unterschritten:

  1. Teilen Sie Xcode mit, wo sich die Dateien befinden sollen :

    • Klicken Sie mit der rechten Maustaste / bei gedrückter Ctrl-Taste auf die Datei oder Dateigruppe, die Sie verschieben möchten, und wählen Sie im angezeigten Kontextmenü die Option "Informationen abrufen". Das Fenster Gruppeninfo oder Dateiinfo wird angezeigt.

    • Klicken Sie ganz rechts im Fenster im Bereich Pfad auf die Schaltfläche Auswählen . Ein Dialogfeld wird angezeigt.

    • Navigieren Sie zu dem Ordner, in den die Dateien verschoben werden sollen. Erstellen Sie bei Bedarf einen neuen Ordner . Klicken Sie auf die Schaltfläche Auswählen in der unteren rechten Ecke des Dialogfelds und schließen Sie das Fenster Gruppeninfo / Dateiinfo .

    • Die Namen der Dateien in der Gruppe werden rot, um anzuzeigen, dass Xcode sie an der von Ihnen angegebenen Stelle nicht finden kann.

  2. Verschieben Sie die eigentlichen Dateien

    • Verschieben Sie im Finder (oder Git) die in Schritt 1 ausgewählten Dateien in die tatsächlichen Ordner, in denen Sie sie haben möchten.

    • Wechseln Sie zurück zu Xcode. Die Dateien / Gruppen sollten alle wieder schwarz geworden sein. Wenn noch welche rot sind, haben Sie es versäumt, etwas in den richtigen Ordner zu verschieben.

Tipps

Ich habe beim Anpassen der ~ 300 Dateien in diesem Projekt einige wichtige Dinge gelernt:

  • Einige Dateien weigern sich, sich auf diese Weise zu bewegen. Das heißt, wenn Sie an das neue Ziel navigieren die Wählen - Taste deaktiviert ist, als die ist Neuer Ordner - Taste. Die Lösung, obwohl ich nicht weiß, warum es einen Unterschied macht, besteht darin, zuerst Xcode zu verwenden, um diese Dateien in eine Gruppe einzufügen (klicken Sie mit der rechten Maustaste / bei gedrückter Ctrl-Taste auf die Dateien und wählen Sie Gruppe und geben Sie der Gruppe einen Namen) und verschieben Sie dann die Gruppe an den neuen Ort. Nachdem Sie die Dateien im Finder tatsächlich verschoben haben, können Sie sie aus der Gruppe entfernen (indem Sie sie in die neue übergeordnete Gruppe / den neuen übergeordneten Ordner ziehen und die Gruppe löschen).

  • Halten Sie an und erstellen Sie alle paar Minuten, nachdem Sie Schritt 2 für eine Reihe von Dateien abgeschlossen haben. Der Build zeigt an, ob Sie bisher etwas vermasselt haben, sodass Sie leichter zurückgehen und es reparieren können, bevor Sie zu viel Schaden angerichtet haben.

  • Wenn die Dateien nicht dorthin verschoben werden, wo Sie sie haben möchten - ich hatte eine teuflische Zeit damit, einige Dateien zu verschieben, die bereits früh im Ordner "Klassen" erstellt wurden -, können Sie sie einfach von ihrem alten Platz im Finder nach ziehen Löschen Sie an einem praktischen Ort wie dem Desktop Verweise auf sie in Xcode und importieren Sie sie dann erneut, indem Sie mit der rechten Maustaste auf die Option Vorhandene Dateien hinzufügen klicken .

  • Wenn Sie in der Vergangenheit Xcode verwendet haben, um Verweise auf Dateien zu löschen, ohne sie auch in den Papierkorb dieses Projekts zu verschieben, finden Sie Dateien, die nicht verschoben werden müssen, sondern nur dort sitzen. Achten Sie darauf, dass Sie nicht das tun, was ich getan habe, und verwechseln Sie die Namen einer aktuellen Gruppe von Dateien, die ich verschoben habe, und der älteren, nicht mehr verknüpften Dateien. Bestehen Sie darauf, dass Xcode sie importiert, weil Sie dachten, dass sie dicht sind.

Hoffe das hilft einer zukünftigen Person. Ich bin überrascht, dass es so schwierig und gelegentlich schwierig war wie es war.


2
Alle Dateien im selben Verzeichnis zu haben, hat mich wirklich nervt. Danke dafür!
Curtis Shipley

Sie können auch: die Verzeichnisstruktur im Finder nach Belieben neu anordnen, alle "roten Dateien" im Projekt entfernen und sie dann mit der Option "In Ordnern
gruppieren

@bshirley Sehr wahr, und wenn sich alle Dateien im Hauptverzeichnis im Projekt befinden müssen, kann dies viel Zeit sparen. Leider kann es bei Projekten, an denen mehrere Personen beteiligt sind oder die im Laufe der Zeit viele Veröffentlichungen hatten, eine beliebige Anzahl von Dateien geben, die dem Projekt nicht hinzugefügt werden sollten. In diesem Fall müssten Sie nachverfolgen, welche Sie entfernt haben, um sie wiederherzustellen, oder ähnliches.
Matthew Frederick

11
In xcode 4 musste ich etwas anderes machen - beim Klicken mit der rechten Maustaste wurden keine kontextbezogenen Links zum Abrufen von Informationen angezeigt. Stattdessen musste ich die Identitäts- und Typansicht anzeigen (wahrscheinlich einen Namen dafür, den ich nicht kenne). Dies ist die Schaltfläche ganz rechts in den Ansichtsoptionen in der xcode4-Kopfzeile. Ich verschiebe die Datei zuerst auf dem Dateisystem und klicke dann auf das seltsame Symbol neben dem Pfad und sage xcode, wo sich die neue Datei befindet.
Evan Pon

6
Das Problem beim Verschieben von Dateien besteht darin, dass Sie, wenn es bereits unter SVN-Kontrolle steht, sicherstellen müssen, dass Sie eine App wie Versionen oder Cornerstone verwenden, um die Dateien zu verschieben ... Andernfalls treten schreckliche Probleme bei der Versionskontrolle auf! Ich wünschte, Apple würde einfach die "Gruppen" -Idee wegwerfen und alles in echten Ordnern haben, a-la-Eclipse ...
Jowie

104

In Xcode 5 oder Xcode 6:

  1. Erstellen Sie die Ordner, die Ihren Gruppen im Finder zugeordnet sind
  2. Verschieben Sie die Dateien in diese Ordner im Finder
  3. Wählen Sie jede rote Datei in der Xcode-Seitenleiste links aus
  4. Klicken Sie auf die Schaltfläche "Dienstprogramme anzeigen / ausblenden", um die rechte Seitenleiste anzuzeigen (siehe Abbildung).
  5. Klicken Sie unter "Identität und Typ" auf die kleine Schaltfläche und wählen Sie den Speicherort der Datei aus (siehe Abbildung).

Geben Sie hier die Bildbeschreibung ein

Prost.


1
Hinweis für einige Benutzer: Wenn Sie eine Fehlermeldung erhalten, dass Änderungen vorgenommen wurden, nachdem die Header-Informationen vorkompiliert wurden, führen Sie einfach eine Bereinigung des Produkts durch, und alles wird funktionieren!
Quantum

Ich habe diesen Ansatz in Xcode 5.1.1 befolgt, um eine Header-Datei in einen physischen Ordner zu verschieben. Ich kann die Datei verschieben. Xcode sagt jedoch "Datei nicht gefunden", während das Projekt erstellt wird. Kannst du bitte helfen.
Rashmi Ranjan Mallick

22

Ich habe festgestellt, dass der zuverlässigste Weg, um das entsetzliche Design von XCode zu umgehen, darin besteht, ALLE Ihre Dateien aus zwei Gründen im Finder zu organisieren:

  1. Finder macht im Gegensatz zur XCode-Benutzeroberfläche keine "Fehler"
  2. Sobald die Dinge im Finder organisiert sind, können Sie ganze Finder-Ordner in XCode ziehen und ablegen, und ... es macht genau das, was Sie wollten, ohne Aufwand

Selbst wenn vorhandene XCode-Dateien verschoben werden, ist dies schneller:

  1. Wählen Sie die Dateien im Finder aus
  2. Erstellen Sie einen Ordner im Finder für sie
  3. Ziehen Sie sie per Drag & Drop in den Ordner (verschiebt sie automatisch)
  4. Ziehen Sie den Finder-Ordner per Drag & Drop in Xcode (automatisch: Erstellt den Xcode-Ordner und fügt jede Datei im Finder-Ordner hinzu.)
  5. Wählen Sie mit cmd jede "rote" Datei aus, die Sie jetzt in Xcode sehen (weil Sie sie verschoben haben), und drücken Sie die Löschtaste

NB: Ich verwende niemals die Option "gezogene Ordner mit Untergruppen erstellen", da dies in XCode 3 oft hoffnungslos fehlerhaft war und Projekte beschädigen konnte. Apple verwendet diese Funktion eindeutig (IMHO) NICHT intern, da es sonst niemals so fehlerhaft gewesen wäre. Wenn Apple nichts verwendet, ist es im Allgemeinen auch nicht sicher, es zu verwenden - sie können nicht gut testen :)


2
Ich versuche es morgen. Dies war die einfache Lösung, nach der ich gesucht habe. Warum haben sie es so schwer gemacht? Wenn es nur das Dateisystem gespiegelt hätte, wäre es weit weniger verwirrend gewesen. Vielen Dank!
Delux247

Dies war die vierte Lösung, die ich ausprobiert habe, und die EINZIGE, die ich mit xcode 5.1.1 arbeiten konnte. Aus irgendeinem Grund würde dies auch für keine meiner Kategorien funktionieren. Ich musste sie buchstäblich in den Papierkorb verschieben, sie wieder aus dem Papierkorb entfernen und sie dann erneut zu xcode hinzufügen, und schließlich funktionierte es.
user3344977

21

Es gibt ein einfach einzurichtendes und zu verwendendes Befehlszeilen-Tool - "synx" in github, das genau das tut, was hier benötigt wird.

Der Xcode-Projektordner im Finder wird neu organisiert, damit er mit den Xcode-Gruppen im Projekt übereinstimmt.

Sie finden es hier: https://github.com/venmo/synx

UPDATE: XCode 9 unterstützt diese Funktion standardmäßig. Sie müssen also keine anderen Tools mehr verwenden!


Tolles Tool, wird aber bei größeren Projekten extrem langsam (es kann einige Minuten dauern, bis der Auftrag abgeschlossen ist) und scheint nicht mehr unterstützt zu werden.
Lukasz

6

Xcode 9

Es scheint, dass Xcode 9 dies jetzt standardmäßig unterstützt. Wenn Sie Dateien von einer Gruppe in eine andere verschieben, wird die Datei auch aus dem alten Ordner in den neuen Ordner verschoben. Dies wurde in der WWDC 2017 angekündigt.



2

Normalerweise verschiebe ich Dateien in das Verzeichnis direkt im Finder und korrigiere dann die Dateien mit roten Farbnamen in XCode im Dialogfeld "Informationen abrufen": Klicken Sie auf die Schaltfläche "Auswählen ..." und wählen Sie den neuen Speicherort der Datei aus. Dies ist die erste Antwort, wenn ich Dateien in XCode verschieben möchte, und es funktioniert.


1

Ab Xcode 4.5 wird beim Ziehen einer Ordnerstruktur diese im Projektnavigator automatisch in verschachtelte Gruppen umgewandelt. Wenn Sie dann auf die Festplatte schauen (z. B. mit der rechten Maustaste klicken und Im Finder anzeigen wählen), wurde die Ordnerstruktur beibehalten.

Ich fand, dass der Versuch, Dinge aus einem älteren Projekt zu reparieren, nur ein Schmerz war. Es stellte sich als viel einfacher heraus, diese Dateien einfach zu löschen und wieder hineinzuziehen.


1

Um einen Ordner in xcode 4.5 zu verschieben, habe ich nur ...

  1. Löschen Sie die Dateien / Gruppen aus xcode und wählen Sie "Referenz entfernen".
  2. Gehen Sie in den Finder und verschieben Sie den Ordner / die Dateien nach Bedarf.
  3. Sobald ich fertig bin, gehe ich zurück zu Xcode und wähle Datei-> Dateien zu {Projektname} hinzufügen.
  4. Stellen Sie sicher, dass "Elemente in den Ordner der Zielgruppe kopieren (falls erforderlich)" aktiviert ist
  5. Stellen Sie sicher, dass "Gruppe für jeden hinzugefügten Ordner erstellen" aktiviert ist
  6. Stellen Sie sicher, dass "Zum Ziel hinzufügen" für Ihr Projekt aktiviert ist

1

Einfachste Technik für XCode 8 ....

Angenommen, Sie haben die Dateien A, B, C in einer logischen Gruppe, möchten sie jedoch in einen Ordner auf Ihrer Festplatte verschieben.

  1. Erstellen Sie einen Zielordner über den Finder
  2. Fügen Sie den Ordner in XCode (Datei -> Dateien hinzufügen) über den Bereich Optionen hinzu, um eine Ordnerreferenz (keine Gruppe) auszuwählen.
  3. Ziehen Sie die Dateien A, B, C aus der (alten) Gruppe in die (neue) Ordnerreferenz im Projektnavigator. XCode verschiebt die Dateien in den Ordner, sowohl im Projekt als auch auf der Festplatte.

Getan.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.