Memindahkan File ke Folder Nyata dalam Xcode

177

Ketika saya memulai proyek saya, saya senang menggunakan Grup di Xcode daripada folder literal: Karena saya menggunakan browser di Xcode untuk mengakses semuanya, semuanya diatur dengan baik dan saya senang.

Namun, sekarang proyek ini akan dibagikan untuk kontrol versi, folder proyek itu sendiri adalah pertunjukan horor bagi mereka yang mencoba untuk memindai melalui terminal, sekitar 300 file, lebih dari setengahnya berupa grafik.

Saya sedang mencoba untuk mengatur kembali hal-hal, membuat folder nyata dan mengimpornya ke Xcode. Sayangnya Xcode tidak membiarkan saya bekerja dengan mereka seperti halnya dengan grup. Sebagai contoh, jika saya klik kanan pada folder yang ditambahkan sebenarnya (biru, bukan kuning) dan memilih untuk menambahkan file yang ada, itu tidak benar-benar meletakkannya di folder itu, itu menempatkannya di root.

Demikian pula, saya tidak bisa memindahkan file dari folder palsu (grup) ke folder nyata: Xcode tidak menganggap folder asli sebagai tempat yang valid untuk memindahkan barang.

Apa yang saya lewatkan? Bagaimana saya bisa meyakinkan Xcode untuk membiarkan saya menggunakan folder seperti cara saya menggunakan grup? Ada jawaban di sini untuk pertanyaan yang agak mirip , tetapi itu tidak benar-benar menyelesaikan masalah saya karena saya sedang bekerja dengan file yang ada.

Matthew Frederick
sumber

Jawaban:

176

Pendekatan modern (dan sangat sederhana!) Untuk 2017 (Xcode 6, 7, 8, dan kadang-kadang 9, karena melakukan beberapa waktu secara otomatis):

Jika Anda memindahkan banyak file ke folder baru dan menjaga hierarki anak, sebenarnya jauh lebih mudah daripada memindahkan setiap file secara individual:

  1. Buat grup baru di bagan folder Xcode dan atur file Anda ke dalamnya sesuka Anda.
  2. Buat pohon folder fisik yang cocok di Finder dan atur file fisik Anda ke dalamnya untuk mencocokkan apa yang Anda lakukan pada langkah 1.
  3. Semua referensi dalam Xcode sekarang harus berwarna merah (tidak apa-apa!).
  4. Dari manajer Identity and Type, pilih Grup dalam Xcode yang ingin Anda pindahkan, lalu klik ikon folder dari panel info:

  5. Dalam dialog pemilihan Finder, cari folder baru yang setara yang Anda buat untuk grup ini di langkah 2. Semua file di dalam grup itu sekarang akan ditemukan kembali secara otomatis!

Bukankah itu bagus? Paling-paling Anda harus mengulangi 5 langkah ini sekali untuk setiap grup baru yang Anda buat (yang mengalahkan setiap file secara individual!)

Poin Bonus!

Katakanlah Anda secara tidak sengaja mengacaukan perpindahan dan sekarang banyak file Anda berwarna merah dan tidak dapat ditemukan: pilih beberapa file yang rusak, dan menggunakan ikon folder yang sama pada tangkapan layar dari langkah 4, cari folder yang benar yang berisi ini file dan mereka akan secara otomatis menyelesaikan jalur yang hilang.

naskah merek
sumber
3
Akan tetapi, melakukan hal ini membuat file-file tidak terlacak di Git. Tentu saja saya selalu dapat membaca file tetapi apakah saya kehilangan sesuatu?
SleepNot
2
@ Emeraldo tidak yakin apa rasa git yang Anda gunakan, tetapi saya tidak pernah punya masalah itu. Namun, Anda bisa melakukannya dengan mudah git add ..
naskah merek
Saya kehilangan sesuatu dan saya tidak yakin apa itu. Mungkin saya tidak mengerti arti kata-kata "mengatur file Anda ke dalamnya ..." pada langkah (1) ?? Saya berasumsi ini berarti "Tambahkan file ke grup dengan drag-and-drop atau apa pun". Tetapi jika saya melakukan ini, maka tentu saja Xcode mengenali file dan tidak menunjukkannya dalam warna merah, seperti yang dinyatakan dalam langkah (3). Ada yang tahu apa yang saya lakukan salah?
hkatz
Apakah Anda memindahkan file fisik seperti pada langkah 2?
Naskah Naskah
1
Ah, saya sudah menemukannya! Langkah (2) terlalu samar bagi saya. Jika saya menulis ulang, saya akan mengatakan sesuatu dengan efek "Buat pohon folder fisik yang cocok, kemudian gunakan perintah Xcode's Show in Finder untuk menemukan file yang Anda tambahkan ke Grup baru pada Langkah (1) dan secara fisik memindahkan file-file itu. ke dalam folder yang baru saja Anda buat. " Sesuatu seperti itu ...
hkatz
119

LEBIH LANJUT Diedit JUNI 2017: Xcode 9 melakukan ini secara otomatis, tidak diperlukan upaya khusus. Jawaban ini dan Brandon hanya berlaku untuk Xcode 8 dan sebelumnya.

EDITED DESEMBER 2016: Jawaban Brandon di bawah adalah solusi yang lebih baik sekarang. Kembali ketika jawaban ini dibuat pada 2010 ini adalah satu-satunya pilihan yang bisa saya temukan. Saya sekarang menyarankan jawaban Brandon , di bawah ini.


Ternyata memindahkan file ke folder nyata tentu dimungkinkan, meskipun tidak sesederhana seharusnya.

Saya mendapatkan informasi dasar dari pertanyaan di sini, Xcode mengatur file dan folder (objek model data inti - iPhone) , tetapi mempelajari hal-hal penting di sepanjang jalan.

Proses

Memindahkan file adalah proses dua langkah dengan beberapa sub-langkah:

  1. Beri tahu Xcode di mana Anda ingin file berada :

    • Klik kanan / Kontrol pada file atau grup file yang ingin Anda pindahkan dan pilih Dapatkan Info dari menu kontekstual yang muncul. Jendela Info Grup atau Info File muncul.

    • Klik tombol Pilih di sisi paling kanan jendela di area Path . Kotak dialog muncul.

    • Arahkan ke folder yang Anda inginkan file dipindahkan. Buat Folder Baru jika perlu. Klik tombol Pilih di sudut kanan bawah kotak dialog, lalu tutup jendela Info Grup / Info File .

    • Nama-nama file / file dalam grup akan berubah menjadi merah untuk menunjukkan bahwa Xcode tidak dapat menemukannya di tempat yang Anda tentukan.

  2. Pindahkan file yang sebenarnya

    • Di Finder (atau Git) pindahkan file yang Anda pilih pada langkah 1 ke folder aktual yang Anda inginkan.

    • Beralih kembali ke Xcode. Semua file / grup menjadi hitam kembali. Jika ada yang masih merah maka Anda telah melewatkan memindahkan sesuatu ke folder yang tepat.

Kiat

Saya belajar beberapa hal penting sambil menyesuaikan ~ 300 file dalam proyek ini:

  • Beberapa file menolak untuk pindah dengan cara ini; yaitu, ketika Anda menavigasi ke tujuan baru tombol Pilih dinonaktifkan, seperti tombol Folder Baru . Solusinya, meskipun saya tidak tahu mengapa itu membuat perbedaan, adalah pertama-tama menggunakan Xcode untuk meletakkan file-file itu di dalam Grup (klik kanan / kontrol-file dan pilih Grup , dan beri nama grup) dan kemudian pindahkan grup ke lokasi baru. Setelah Anda benar-benar memindahkan file dalam Finder, Anda dapat menghapusnya dari grup (dengan menyeretnya ke folder / folder induk baru dan menghapus grup).

  • Hentikan dan bangun setiap beberapa menit, setelah menyelesaikan langkah 2 untuk sejumlah file. Build akan memberi tahu Anda jika Anda telah mengacaukan sesuatu sejauh ini, membuatnya lebih mudah untuk kembali dan memperbaikinya sebelum Anda melakukan terlalu banyak kerusakan.

  • Jika file tidak akan pindah ke tempat yang Anda inginkan - Saya punya banyak waktu untuk memindahkan beberapa file yang telah dibuat sejak awal di folder Classes - Anda dapat dengan mudah menyeretnya keluar dari tempat lama di pencari untuk suatu tempat yang berguna seperti desktop, menghapus referensi mereka di Xcode, dan kemudian mengimpornya kembali melalui kanan / kontrol-klik opsi Tambahkan File yang Ada .

  • Jika di masa lalu Anda telah menggunakan Xcode untuk menghapus referensi ke file tanpa juga memindahkannya ke tempat sampah di proyek ini, Anda akan menemukan file yang tidak harus dipindahkan tetapi hanya duduk di sana. Berhati-hatilah agar Anda tidak melakukan apa yang saya lakukan, membingungkan nama-nama grup file saat ini yang saya pindahkan dan file-file yang lebih lama, yang tidak lagi terhubung, bersikeras bahwa Xcode mengimpornya karena Anda pikir itu padat.

Semoga ini bisa membantu orang di masa depan. Saya terkejut bahwa itu sama sulit dan kadang-kadang rumit seperti itu.

Matthew Frederick
sumber
2
Memiliki semua file dalam direktori yang sama benar-benar menggangguku. Terima kasih untuk ini!
Curtis Shipley
Anda juga dapat: mengatur ulang struktur direktori sesuka hati dalam Finder, menghapus semua "file merah" dalam proyek, dan kemudian menambahkan semuanya kembali ke proyek menggunakan opsi "group in folder"
bshirley
@bshirley Sangat benar, dan jika semua file di direktori utama harus dalam proyek maka itu dapat menghemat banyak waktu. Sayangnya dengan proyek yang melibatkan banyak orang atau yang memiliki banyak rilis dari waktu ke waktu, mungkin ada sejumlah file di sana yang tidak boleh ditambahkan ke proyek. Dalam hal ini Anda harus melacak mana yang Anda hapus untuk memulihkannya, atau yang serupa.
Matthew Frederick
11
di xcode 4 saya harus melakukan sesuatu yang berbeda - tidak melihat tautan kontekstual 'dapatkan info' saat mengklik kanan. alih-alih saya harus menampilkan tampilan identitas dan tipe (mungkin nama untuk ini yang saya tidak tahu). itu adalah tombol paling kanan dalam opsi tampilan di bilah header xcode4. saya memindahkan file pada filesystem pertama, dan kemudian klik ikon aneh di sebelah jalan, dan beri tahu xcode di mana file baru itu.
Evan Pon
6
Masalah dengan memindahkan file adalah ketika itu sudah di bawah kendali SVN, Anda perlu memastikan Anda menggunakan aplikasi seperti Versi atau Cornerstone untuk memindahkan file di sekitar ... Atau Anda akan berakhir dengan masalah kontrol versi yang mengerikan! Saya berharap Apple hanya membuang ide "grup" dan menyimpan semuanya di folder nyata, a-la Eclipse ...
jowie
104

Dalam Xcode 5 atau Xcode 6:

  1. Buat folder yang memetakan ke Grup Anda di Finder
  2. Pindahkan file ke folder itu di Finder
  3. Pilih setiap file yang berwarna merah di bilah sisi Xcode di sebelah kiri
  4. Klik tombol "Tampilkan / Sembunyikan Utilitas" untuk menampilkan bilah samping kanan (lihat gambar)
  5. Dalam "Identity and Type", klik tombol mungil dan pilih lokasi file (lihat gambar)

masukkan deskripsi gambar di sini

Bersulang.

reinaldoluckman
sumber
1
Catatan untuk beberapa pengguna, jika Anda mendapatkan kesalahan bahwa perubahan dilakukan setelah informasi header dikompilasi, lakukan Pembersihan produk dan semuanya akan beres!
kuantum
Saya mengikuti pendekatan ini di Xcode 5.1.1 untuk memindahkan file header ke folder fisik. Saya dapat memindahkan file. Tetapi Xcode mengatakan "file tidak ditemukan" saat membangun proyek. Bisakah Anda membantu?
Rashmi Ranjan mallick
22

Saya telah menemukan cara yang paling dapat diandalkan untuk mengatasi desain XCode yang mengerikan di sini adalah mengatur SEMUA file Anda di Finder, karena dua alasan:

  1. Finder tidak membuat "kesalahan", tidak seperti GUI XCode
  2. Setelah semuanya diatur dalam Finder, Anda dapat menyeret / menjatuhkan seluruh folder Finder ke XCode, dan ... melakukan apa yang Anda inginkan, tanpa usaha

Bahkan ketika memindahkan file-file XCode yang ada, lebih cepat untuk melakukan ini:

  1. Pilih file dalam Finder
  2. Buat folder di Finder untuk mereka
  3. Seret / jatuhkan ke folder (Pindahkan secara otomatis)
  4. Seret / jatuhkan folder Finder ke Xcode (secara otomatis: membuat folder Xcode, menambahkan setiap file di folder Finder)
  5. cmd-pilih setiap file "merah" yang sekarang Anda lihat di Xcode (karena Anda memindahkannya) dan tekan tombol hapus

NB: Saya tidak pernah menggunakan opsi "buat folder yang diseret dengan sub-grup", karena dalam XCode 3 yang sering bermasalah dan bisa merusak proyek. Apple jelas (IMHO) TIDAK menggunakan fitur ini secara internal, jika tidak, itu tidak akan pernah diizinkan untuk menjadi buggy; jika Apple tidak menggunakan sesuatu, umumnya tidak aman untuk menggunakannya juga - mereka tidak pandai menguji :)

Adam
sumber
2
Saya mencoba ini besok .. ini adalah solusi sederhana yang saya cari. Mengapa mereka membuatnya begitu sulit? Jika itu hanya mencerminkan sistem file itu akan jauh lebih membingungkan. Terima kasih!
delux247
Ini adalah solusi keempat yang saya coba dan SATU-SATUNYA saya bisa bekerja dengan xcode 5.1.1. Juga, untuk beberapa alasan ini tidak akan berfungsi untuk kategori saya mana pun. Saya benar-benar harus memindahkannya ke Sampah, mengambilnya kembali dari Sampah, dan kemudian menambahkannya kembali ke xcode dan akhirnya berhasil.
user3344977
21

Ada yang sederhana untuk mensetup dan menggunakan Command Line Tool - "synx" tersedia di github yang melakukan apa yang dibutuhkan di sini.

Ini mengatur ulang folder proyek Xcode di finder untuk mencocokkan grup Xcode dalam proyek.

Anda dapat menemukannya di sini: https://github.com/venmo/synx

PEMBARUAN: XCode 9 mendukung fitur ini secara default. Jadi, tidak perlu menggunakan alat lain lagi!

Nitesh Borad
sumber
Alat yang hebat tetapi menjadi sangat lambat dalam proyek yang lebih besar (mungkin perlu beberapa menit untuk menyelesaikan pekerjaan) dan tampaknya tidak didukung lagi.
Lukasz
6

Xcode 9

Tampaknya Xcode 9 sekarang mendukungnya secara default. Ketika Anda memindahkan file dari grup ke grup lain, file tersebut juga akan dipindahkan dari folder lama ke folder baru. Ini diumumkan di WWDC 2017.

Guy Daher
sumber
2

Saya biasanya memindahkan file ke direktori langsung di Finder, lalu memperbaiki file dengan nama warna merah di XCode dalam dialog "Get Info" mereka: klik tombol "Choose ..." dan pilih locatoin baru file. Itulah respons pertama ketika saya ingin memindahkan file dalam XCode, dan itu berfungsi.

Xie Yanbo
sumber
1

Pada Xcode 4.5 ketika Anda menyeret struktur folder itu secara otomatis berubah menjadi grup bersarang di Navigator Proyek. Kemudian, jika Anda melihat pada disk (mis. Klik kanan dan pilih Show in Finder), struktur folder telah dipertahankan.

Saya menemukan mencoba untuk memperbaiki hal-hal dari proyek yang lebih tua hanya menyusahkan. Ternyata jauh lebih mudah untuk hanya menghapus file-file ini dan menariknya lagi.

Snowcrash
sumber
1

Untuk memindahkan folder di xcode 4,5, saya hanya ...

  1. Hapus file / grup dari xcode dan pilih "Hapus Referensi".
  2. Pergilah ke finder dan pindahkan folder / file sesuai kebutuhan.
  3. Setelah selesai saya kembali ke Xcode dan pilih File-> Tambah File ke {ProjectName}.
  4. Pastikan "Salin Item ke folder Grup Tujuan (Jika perlu)" dicentang
  5. Pastikan "Buat Grup untuk folder yang ditambahkan" dicentang
  6. Pastikan "Tambahkan ke Target" dicentang untuk proyek Anda
Shannon Cole
sumber
1

Teknik termudah untuk XCode 8 ....

Dengan asumsi Anda memiliki file A, B, C dalam grup logis, tetapi ingin mereka pindah ke folder di hard drive Anda.

  1. Buat folder tujuan melalui Finder
  2. Tambahkan folder dalam XCode (File -> Add Files) menggunakan panel Options untuk memilih Referensi Folder (bukan grup)
  3. Seret file A, B, C dari grup (lama) ke referensi folder (baru) di navigator proyek. XCode akan memindahkan file ke folder, baik di proyek, dan di disk.

Selesai

perangkat lunak berkembang
sumber