web-dev-qa-db-ja.com

Xcodeプロジェクトファイルをどのように整理する必要がありますか?

Xcodeのファイル編成に頭を悩ませようとしています-または不足しています。私はプロジェクトでやりたいことをすべて行うことができ、すべての「偽の」フォルダーと構造で見栄えがします。私はファイルシステムとブーム[〜#〜]巨大な[〜#〜]の混乱を見に行きます。 Create Folder Reference for any added folderオプションをオンにしてファイルをインポートしようとしましたが、うまくいきました。 Xcodeとファイルシステムの両方で必要な構造を取得します。

問題:Xcodeのフォルダ参照であるファイルシステム上のフォルダにファイルを追加すると、プロジェクトをリロードした後でも、調べてみるとXcodeにはありません。フォルダ参照内のファイル/サブフォルダは、Xcode内で移動できません。それらをファイルシステムに移動すると、Xcodeに赤いリンクが表示されます(ファイルが見つかりませんか?)。

整理されたプロジェクトを維持するにはどうすればよいですかおよびファイルシステム?フォルダーを認識し、その(現在および最新の)ファイルとサブフォルダーをプロジェクトに表示するようにプロジェクトを設定するにはどうすればよいですか?

私が遭遇したように見える別の問題は、フォルダ参照を使用してファイルを変更した場合、完全なクリーンアップと再構築を行わない限り、ファイルがアプリケーションで更新されないことです。フォルダー参照を使用しない場合、allファイルは、アプリケーションバンドルのResourceフォルダーにダンプされますが、Nice構造ではダンプされません。私のプロジェクト。

気にする必要がありますか?偽のフォルダを使用して、すべてをどこにでも移動させて気にしないでください。私のアプリケーションバンドルはめちゃくちゃになり、ファイルシステムはめちゃくちゃになりますが、それはすべて機能します...私は願っていますか?

編集:

整理されたファイルシステムが必要な最大の理由は、リソースファイル(画像、サウンド、その他のデータファイルなど)がXcodeで編集されていないことです。ファイルシステムを介してサードパーティのアプリでそれらにアクセスする必要があります。それが混乱している場合は、他のサードパーティアプリケーションで見つけて維持するのが難しいです。

また、次のような構造が必要な場合はどうなりますか。

  • 画像/背景/Name.png
  • Images/Icons/Name.png
  • Images/Titles/Name.png

整理するのにフォルダではなく長いファイル名を使用する必要がありますか?

  • Images_Backgrounds_Name.png
  • Images_Icons_Name.png
  • Images_Titles_Name.png
33
Justin808

気にする必要がありますか?偽のフォルダを使用して、すべてをどこにでも移動させて気にしないでください。私のアプリケーションバンドルは混乱し、ファイルシステムは混乱しますが、それはすべて機能します...私は願っていますか?

IMO番号... :)基本的に。重要なのは、XCodeはプログラミングの最高の体験を提供するように設計されているということです。 Appleが、実際のファイルシステム内のすべてのファイルとフォルダーを物理的に整理することを望んでいた場合、彼らはそのようにしたでしょう。

とにかく、なぜすべてのファイルとフォルダをこのように整理したいのか、私にはよくわかりません。アプリケーションの実行に違いはなく、XCodeの「偽の」フォルダ(グループ)は、自分(および他の人)がクラスやその他のリソースをナビゲートするために必要な視覚的支援を適切に提供します。 (あなたが見つけたように)あなたのファイルシステムでそれを正しく整理することは確かに物事をより難しくしますか?

5
Thomas Clayson

また、Xcodeが自動的にそれ自体とファイルシステムの同期を維持することを望みます。

GitHubのacani-iphone というプロジェクトで、手動で1時間かけて作業しました。基本的には、Finderを使用していくつかのファイルを移動し、好きなように新しいフォルダを作成しました。次に、Xcodeに切り替えて、移動したばかりのファイルが赤になっていることを確認しました(Xcodeは、移動元の場所だと思っていたため、ファイルが見つからなかったため)。

更新:赤いグループまたはファイルをクリックして、CMD + i(赤いファイルまたはグループを右クリックすると開くことができるコンテキストメニューから情報を取得)を押すだけでよいことがわかりました。 [全般]タブで[選択]をクリックし、ファイルシステム内のファイルの移動先を見つけました。しかし、私はそれをしませんでした。代わりにこれが私がしたことです。

次に、Xcode内のすべての赤いファイルを強調表示し、command + deleteを押して、壊れた(赤い)参照を削除しました。次に、ファイルを追加したいグループ(通常は同じグループ)を右クリックし、Add> Existing Files...をクリックしました。次に、ファイルシステムの新しい場所で同じファイルを見つけました。 [アイテムを宛先グループのフォルダーにコピーする(必要な場合)]をオフのままにし、[追加したフォルダーのグループを再帰的に作成する]ラジオボタンをオンにし、追加するファイルがビルドに使用されている場合は[ターゲットacaniに追加]をオンにしましたacaniiPhoneアプリ。

私は一度にファイルのディレクトリのように上記を行いました。ほとんどの場合、[追加したフォルダのグループを再帰的に作成する]ラジオボタンを選択したため、一度に複数のディレクトリを追加することで、より積極的になりました。

ファイルacani_Prefix.pchacani-Info.plistはルートファイルシステムのディレクトリに残しておく必要があることがわかりました(ただし、これらのファイルを他の場所に配置できるように設定できる設定がある場合もありますが、 acani-Info.plistに移動して名前を変更できるように、acani_Prefix.pchに行しますが、ファイルシステムのルートディレクトリで問題ありません。

それは面倒で、おそらく先延ばしなどの問題に値することすらありませんでしたが、今後、既存のファイルをXcodeに追加する前に、ファイルシステム上で希望する場所にあることを確認します。

16
ma11hew28

OK、これがその仕組みです:

Xcodeは、ファイルについて説明するまで、ファイルについて認識しません。つまり、Finderで手動でファイルをXcodeプロジェクト内のファイルを含むフォルダーに追加したとしても(通常は悪い考えです)、「既存のファイルをプロジェクトに追加」するまでファイルを認識しません。

既存のファイル(またはファイルのグループ)をプロジェクト(たとえば、ダウンロードしたばかりのコード)に追加するためのベストプラクティス(imo)は、[既存のファイルを追加]を選択してから、[アイテムを宛先グループのフォルダーにコピーする(必要な場合)]を選択することです。 "次のダイアログで、プロジェクトに問題のファイルへの単なる参照ではなく、問題のファイルのコピーを持たせたい場合(両方の長所と短所があります)。

Xcode内のフォルダーの名前や、物を置く場所についてはあまり気にしないでください。ただし、環境に適した標準を維持するようにしてください。たとえば、私は常に自分が書いたクラスを「クラス」に配置し、プロジェクトで使用するためにダウンロードしたライブラリコード用に個別のフォルダーを用意しています。私はいつも画像/アイコン/オーディオなどを「リソース」に入れています。

つまり、プロジェクトフォルダーの内容をプロジェクトの内容とほぼ同じにしたい場合は、常に[アイテムを宛先グループのフォルダーにコピーする]を選択して既存のファイルを追加してください

XCodeの柔軟性は意図的なものです。あなたが物事をどのように整理したいかを決めるのはあなた次第です。

6
pro7otype

Synx を使用します。

Xcodeグループに一致するようにディスク上のファイルを再配置します。 Xcodeグループを変更するコードをコミットする前に実行しようとすると、プロジェクトが適切に整頓された状態に保たれます。

2
joerick

Xcodeがそれ自体とファイルシステムの同期を保つことができれば素晴らしいと思います。残念ながらそうではありません。それが必要な理由の1つは、SCCSの階層がXcodeの階層と一致するようにするためです。

私は、Xcodeで物事を整理し、ファイルシステムを「クラス」と「リソース」に分けたままにすることにフォールバックします。

1
Graham Perks

これはXcode9で変更されました。 リリースノート から:

プロジェクトナビゲータのグループは、ファイルシステムのディレクトリとより密接に関連付けられるようになりました。 (28612132)

  • プロジェクトナビゲータのグループ間でファイルをドラッグすると、ファイルシステム内のファイルが移動し、関連するSCM作業コピーが更新されます。
  • グループがファイルシステム内のフォルダーに接続されている場合、グループを作成、名前変更、および削除すると、ファイルシステム内の対応するファイルとフォルダーが更新されます。
  • グループとファイルシステム内のフォルダー間の接続を削除するには、グループを選択し、ファイルインスペクターを開いて、[パスのクリア]ボタン(X)をクリックします。
  • ファイルシステム内のファイルまたはフォルダーからプロジェクト内のファイルまたはグループへの関連付けを追加または更新するには、ファイルまたはグループを選択し、ファイルインスペクターを開いて、対応するファイルまたはフォルダーをファイルの[場所]セクションにドラッグします。検査官。

新しい動作は「フォルダ付きの新しいグループ」コマンド(「新しいグループ」として表示される場合があります)から利用できますが、古い動作は「新しいグループwithoutFolder 'コマンド(これは単に' New Group 'として表示されることもあります!)ターゲットフォルダー内の既存のグループの中で主に使用されているため、' NewGroup 'というラベルの付いたコマンドが決まります。少し紛らわしいですが、どちらかを選択する習慣がある場合は、デフォルトの「新しいグループ」コマンドをそのまま使用できるという考えのようです。 ( rob mayoffのはるかに詳細な説明を参照してください。

0
Kal

私がやっていることは、各フォルダを表すグループを作成し、ファイルを追加する前に、右側のパネルの最初のタブの[パス]のすぐ下に、フォルダを選択できるアイコンがあります。そのフォルダダイアログで、グループに一致するフォルダを作成して選択します。

Xcode3では、これにより、このパスで始まる新規およびファイルの追加ダイアログが表示されました。それは努力する価値がありました。ただし、Xcode4はこの設定を尊重しません。したがって、それに真の価値があるかどうかは疑わしいです。また、XCOdeがより良いファイルシステム編成をサポートすることを望みます。

グループやフォルダに関係なく、ファイル名はプロジェクト内で一意である必要があることを考えると、フラットフォルダ構造のデフォルトを受け入れ、IDEの利便性のためにグループを使用することには正当性があります。他のプラットフォームから取得するのは困難ですこれが眉をひそめるところ。

0
levous

私はあなたと個人的に実際の構造を気にすることはできず、ただワークスペースに頼っていると感じています。

本当に素晴らしいのは、ワークスペース構造を調べ、それに応じてファイルシステムを再編成し、フォルダーの名前変更などを処理するツールです。これは古典的なソリューションであり、IMHOはオプションとして実装する必要があります。プロジェクトを進めながら、プロジェクトを再編成します。

xcode4はgitとSVNの両方で機能しますが、いくつかの問題はソース管理である可能性があります。

0
Nir Pengas