Di chuyển tệp vào thư mục thực trong Xcode


177

Khi tôi bắt đầu dự án của mình, tôi rất vui khi sử dụng Nhóm trong Xcode chứ không phải thư mục theo nghĩa đen: Vì tôi đang sử dụng trình duyệt trong Xcode để truy cập mọi thứ, mọi thứ được tổ chức độc đáo và tôi rất vui.

Tuy nhiên, bây giờ dự án sắp được chia sẻ để kiểm soát phiên bản, thư mục dự án là một chương trình kinh dị cho những người cố gắng quét nó qua một thiết bị đầu cuối, khoảng 300 tệp, hơn một nửa trong số đó là đồ họa.

Bây giờ tôi đang cố gắng sắp xếp lại mọi thứ, tạo các thư mục thực và nhập chúng vào Xcode. Thật không may, Xcode không cho phép tôi làm việc với họ theo cách nó làm với các nhóm. Ví dụ: nếu tôi nhấp chuột phải vào thư mục đã thêm thực tế (màu xanh, không phải màu vàng) và chọn thêm tệp hiện có, thì nó không thực sự đặt chúng vào thư mục đó, nó sẽ đặt chúng vào thư mục gốc.

Tương tự, tôi không thể di chuyển tệp từ thư mục giả (một nhóm) vào thư mục thực: Xcode không coi các thư mục thực là nơi hợp lệ để chuyển nội dung sang.

Tôi đang thiếu gì? Làm cách nào tôi có thể thuyết phục Xcode cho phép tôi sử dụng các thư mục theo cách tôi sử dụng các nhóm? Có một câu trả lời ở đây cho một câu hỏi tương tự , nhưng nó không thực sự giải quyết vấn đề của tôi vì tôi đang làm việc với các tệp hiện có.

Câu trả lời:


176

Một cách tiếp cận hiện đại (và đơn giản!) Cho năm 2017 (Xcode 6, 7, 8 và đôi khi là 9, vì nó tự động thực hiện một số thời gian):

Nếu bạn đang di chuyển một loạt các tệp vào một thư mục mới và đang giữ hệ thống phân cấp con, thì thực tế sẽ dễ dàng hơn nhiều so với việc di chuyển từng tệp riêng lẻ:

  1. Tạo các nhóm mới trong cây thư mục Xcode và sắp xếp các tệp của bạn vào chúng theo cách bạn muốn.
  2. Tạo cây thư mục vật lý phù hợp trong Finder và sắp xếp các tệp vật lý của bạn vào chúng để khớp với những gì bạn đã làm trong bước 1.
  3. Tất cả các tham chiếu trong Xcode bây giờ sẽ có màu đỏ (không sao cả!).
  4. Từ trình quản lý danh tính và loại, chọn Nhóm trong Xcode mà bạn muốn di chuyển, sau đó nhấp vào biểu tượng thư mục từ ngăn thông tin:

  5. Trong hộp thoại chọn Finder, xác định vị trí thư mục mới tương đương mà bạn đã tạo cho nhóm này trong bước 2. Tất cả các tệp trong nhóm đó sẽ được tự động tìm lại!

Điều đó không tốt sao? Nhiều nhất bạn sẽ phải lặp lại 5 bước này một lần cho mỗi nhóm mới mà bạn đã tạo (nhịp này sẽ di chuyển từng tệp riêng lẻ!)

Điểm thưởng!

Giả sử bạn vô tình làm hỏng việc di chuyển và bây giờ một loạt các tệp của bạn có màu đỏ và không thể tìm thấy: chọn nhiều tệp bị hỏng và sử dụng cùng một biểu tượng thư mục trong ảnh chụp màn hình từ bước 4, tìm thư mục chính xác chứa các tệp này tập tin và họ sẽ tự động giải quyết các đường dẫn bị thiếu.


3
Tuy nhiên, làm điều này làm cho các tệp không bị theo dõi trong Git. Tất nhiên tôi luôn có thể gặt lại tập tin nhưng tôi có thiếu thứ gì không?
Ngủ

2
@jeraldo không chắc chắn hương vị của git bạn đang sử dụng nhưng tôi chưa bao giờ gặp vấn đề đó. Bạn có thể, tuy nhiên, dễ dàng làm git add ..
brandonscript

Tôi đang thiếu một cái gì đó và tôi không chắc nó là gì. Có lẽ tôi không hiểu ý nghĩa của các từ "sắp xếp các tệp của bạn vào chúng ..." trong bước (1) ?? Tôi giả sử điều này có nghĩa là "Thêm các tệp vào nhóm bằng cách kéo và thả hoặc bất cứ điều gì". Nhưng nếu tôi làm điều này, thì dĩ nhiên Xcode sẽ nhận ra các tệp và không hiển thị chúng bằng màu đỏ, như được nêu trong bước (3). Bất cứ ý tưởng những gì tôi đang làm sai?
hkatz

Bạn đã di chuyển các tập tin vật lý như trong bước 2?
brandonscript

1
Ah, tôi đã tìm ra rồi! Bước (2) là một chút quá khó hiểu đối với tôi. Nếu tôi đang viết lại, tôi sẽ nói điều gì đó với tác dụng của "Tạo cây thư mục vật lý phù hợp, sau đó sử dụng lệnh Show in Finder của Xcode để xác định vị trí các tệp bạn đã thêm vào Nhóm mới trong Bước (1) và di chuyển vật lý các tệp đó vào thư mục bạn vừa tạo. " Một cái gì đó như thế ...
hkatz

119

FURTHER EDITED JUNE 2017: Xcode 9 thực hiện điều này một cách tự động, không cần nỗ lực đặc biệt. Câu trả lời này và Brandon chỉ áp dụng cho Xcode 8 trở về trước.

EDITED THÁNG 12 NĂM 2016: Câu trả lời của Brandon dưới đây là một giải pháp tốt hơn bây giờ. Quay lại khi câu trả lời này được tạo ra vào năm 2010, đây là lựa chọn duy nhất tôi có thể tìm thấy. Bây giờ tôi đề nghị câu trả lời của Brandon , bên dưới.


Nó chỉ ra rằng việc di chuyển các tập tin vào các thư mục thực là chắc chắn có thể, mặc dù không đơn giản như nó cần phải có.

Tôi đã nhận được thông tin cơ bản từ một câu hỏi ở đây, Xcode tổ chức các tệp và thư mục (đối tượng mô hình dữ liệu cốt lõi - iPhone) , nhưng đã học được những điều quan trọng trên đường đi.

Quá trình

Di chuyển các tệp là một quá trình hai bước với nhiều bước phụ:

  1. Nói với Xcode nơi bạn muốn các tệp được :

    • Nhấp chuột phải / Control vào tệp hoặc nhóm tệp mà bạn muốn di chuyển và chọn Nhận thông tin từ menu ngữ cảnh xuất hiện. Các Nhóm Thông tin hoặc tập tin Thông tin cửa sổ xuất hiện.

    • Nhấp vào nút Chọn ở phía bên phải của cửa sổ trong khu vực Đường dẫn . Một hộp thoại xuất hiện.

    • Điều hướng đến thư mục bạn muốn các tập tin được di chuyển đến. Tạo một thư mục mới nếu cần. Bấm vào nút Chọn ở góc dưới bên phải của hộp thoại, sau đó đóng cửa sổ Thông tin nhóm / Thông tin tệp .

    • Tên của tệp / tệp trong nhóm sẽ chuyển sang màu đỏ để cho biết Xcode không thể tìm thấy chúng ở nơi bạn đã chỉ định.

  2. Di chuyển các tập tin thực tế

    • Trong Finder (hoặc Git), di chuyển các tệp bạn đã chọn ở bước 1 vào các thư mục thực tế mà bạn muốn chúng vào.

    • Chuyển về Xcode. Các tập tin / nhóm nên đã chuyển sang màu đen một lần nữa. Nếu bất kỳ vẫn còn màu đỏ thì bạn đã bỏ lỡ di chuyển một cái gì đó vào đúng thư mục.

Lời khuyên

Tôi đã học được một vài điều quan trọng trong khi điều chỉnh ~ 300 tệp trong dự án này:

  • Một số tệp từ chối di chuyển theo cách này; nghĩa là, khi bạn điều hướng đến đích mới, nút Chọn sẽ bị tắt, cũng như nút Thư mục mới . Giải pháp, mặc dù tôi không biết tại sao nó lại tạo ra sự khác biệt, trước tiên là sử dụng Xcode để đặt các tệp đó vào Nhóm (nhấp chuột phải / kiểm soát nhấp vào tệp và chọn Nhóm và đặt tên cho nhóm), sau đó di chuyển tên nhóm đến địa điểm mới. Sau khi bạn thực sự di chuyển các tệp trong Finder, bạn có thể xóa chúng khỏi nhóm (bằng cách kéo chúng vào nhóm / thư mục cha mẹ mới và xóa nhóm).

  • Dừng và xây dựng cứ sau vài phút, sau khi hoàn thành bước 2 cho một số tệp. Bản dựng sẽ cho bạn biết nếu bạn đã làm hỏng bất cứ thứ gì cho đến nay, giúp việc quay lại và sửa chữa nó dễ dàng hơn trước khi bạn gây ra quá nhiều thiệt hại.

  • Nếu các tệp sẽ không di chuyển đến nơi bạn muốn - Tôi có một thời gian di chuyển một số tệp đã được tạo sớm trong thư mục Lớp học - bạn có thể chỉ cần kéo chúng ra khỏi vị trí cũ của chúng trong công cụ tìm Một nơi nào đó tiện dụng như máy tính để bàn, xóa các tham chiếu đến chúng trong Xcode, sau đó nhập lại chúng thông qua tùy chọn bên phải / control-click Thêm tệp hiện có .

  • Nếu trước đây bạn đã sử dụng Xcode để xóa các tham chiếu đến các tệp mà không chuyển chúng vào thùng rác trong dự án này, bạn sẽ tìm thấy các tệp không phải di chuyển mà chỉ ngồi ở đó. Hãy cẩn thận rằng bạn không làm những gì tôi đã làm, nhầm lẫn tên của một nhóm tệp hiện tại tôi đang di chuyển và các tệp cũ hơn, không còn liên kết, khăng khăng rằng Xcode nhập chúng vì bạn nghĩ rằng nó dày đặc.

Hy vọng điều này sẽ giúp một số người trong tương lai. Tôi ngạc nhiên rằng nó cũng khó khăn và đôi khi khó khăn như vậy.


2
Có tất cả các tập tin trong cùng một thư mục đã thực sự làm tôi khó chịu. Cảm ơn vì điều này!
Curtis Shipley

bạn cũng có thể: sắp xếp lại cấu trúc thư mục theo ý muốn trong Finder, xóa tất cả "tệp đỏ" trong dự án và sau đó thêm tất cả chúng trở lại dự án bằng tùy chọn "nhóm trong thư mục"
bshirley

@bshirley Rất đúng, và nếu tất cả các tệp trong thư mục chính cần có trong dự án thì điều đó có thể tiết kiệm rất nhiều thời gian. Thật không may với các dự án liên quan đến nhiều người hoặc đã có rất nhiều bản phát hành theo thời gian, có thể có bất kỳ số lượng tệp nào không nên được thêm vào dự án. Trong trường hợp đó, bạn phải theo dõi những cái bạn đã xóa để khôi phục chúng, hoặc một cái gì đó tương tự.
Matthew Frederick

11
trong xcode 4 tôi đã phải làm một cái gì đó khác biệt - không thấy bất kỳ liên kết 'lấy thông tin' theo ngữ cảnh nào khi nhấp chuột phải. thay vào đó tôi phải hiển thị danh tính và kiểu xem (có thể là tên cho cái này mà tôi không biết). đó là nút ngoài cùng bên phải trong các tùy chọn xem trong thanh tiêu đề xcode4. Tôi di chuyển tệp trên hệ thống tệp trước, sau đó nhấp vào biểu tượng lạ bên cạnh đường dẫn và báo cho xcode biết tệp mới ở đâu.
Evan Pon

6
Vấn đề với việc di chuyển tệp là khi nó nằm dưới sự kiểm soát của SVN, bạn cần đảm bảo rằng bạn sử dụng một ứng dụng như Phiên bản hoặc Nền tảng để di chuyển các tệp xung quanh ... Hoặc bạn sẽ gặp phải sự cố kiểm soát phiên bản khủng khiếp! Tôi ước Apple sẽ loại bỏ ý tưởng "nhóm" đi và có mọi thứ trong các thư mục thực, a-la Eclipse ...
jowie

104

Trong Xcode 5 hoặc Xcode 6:

  1. Tạo các thư mục ánh xạ tới các Nhóm của bạn trong Finder
  2. Di chuyển các tệp vào các thư mục đó trong Finder
  3. Chọn từng tệp màu đỏ trong thanh bên Xcode ở bên trái
  4. Nhấp vào nút "Hiển thị / Ẩn tiện ích" để hiển thị thanh bên phải (xem hình)
  5. Trong "Danh tính và Loại", nhấp vào nút nhỏ và chọn vị trí tệp (xem hình)

nhập mô tả hình ảnh ở đây

Chúc mừng.


1
Lưu ý với một số người dùng, nếu bạn gặp lỗi thay đổi được thực hiện sau khi thông tin tiêu đề được biên dịch trước, chỉ cần thực hiện Dọn dẹp sản phẩm và mọi việc sẽ ổn!
lượng tử

Tôi đã làm theo cách tiếp cận này trong Xcode 5.1.1 để di chuyển tệp tiêu đề vào một thư mục vật lý. Tôi có thể di chuyển các tập tin. Nhưng Xcode nói "không tìm thấy tệp" trong khi xây dựng dự án. Bạn có thể giúp.
Rashmi Ranjan mallick

22

Tôi đã tìm thấy cách đáng tin cậy nhất để làm việc xung quanh thiết kế kinh khủng của XCode ở đây là tổ chức TẤT CẢ các tệp của bạn trong Finder, vì hai lý do:

  1. Finder không mắc "lỗi", không giống như GUI của XCode
  2. Khi mọi thứ được sắp xếp trong Finder, bạn có thể kéo / thả toàn bộ thư mục Finder vào XCode và ... nó thực hiện chính xác những gì bạn muốn mà không cần nỗ lực

Ngay cả khi di chuyển các tệp XCode hiện có xung quanh, việc này sẽ nhanh hơn để làm điều này:

  1. Chọn các tệp trong Finder
  2. Tạo một thư mục trong Finder cho họ
  3. Kéo / thả chúng vào thư mục (tự động Di chuyển chúng)
  4. Kéo / thả thư mục Finder vào Xcode (tự động: tạo thư mục Xcode, thêm mọi tệp trong thư mục Finder)
  5. cmd-select mọi tệp "đỏ" mà bạn hiện thấy trong Xcode (vì bạn đã di chuyển chúng) và nhấn phím xóa

Lưu ý: Tôi không bao giờ sử dụng tùy chọn "tạo thư mục được kéo với các nhóm phụ", bởi vì trong XCode 3 thường bị lỗi vô vọng và có thể làm hỏng các dự án. Apple rõ ràng (IMHO) KHÔNG sử dụng tính năng này trong nội bộ, nếu không, nó sẽ không bao giờ được phép có lỗi như vậy; nếu Apple không sử dụng một thứ, thì nhìn chung nó cũng không an toàn - họ cũng không thử nghiệm :)


2
Tôi đang thử điều này vào ngày mai .. đây là giải pháp đơn giản mà tôi đang tìm kiếm. Tại sao họ làm cho nó khó khăn như vậy? Nếu nó chỉ nhân đôi hệ thống tập tin thì nó sẽ ít gây nhầm lẫn hơn. Cảm ơn!
delux247

Đây là giải pháp thứ tư tôi đã thử và là giải pháp DUY NHẤT tôi có thể làm việc với xcode 5.1.1. Ngoài ra, vì một số lý do, điều này sẽ không hoạt động cho bất kỳ danh mục nào của tôi. Tôi đã phải chuyển chúng vào Thùng rác theo nghĩa đen, đưa chúng ra khỏi Thùng rác và sau đó thêm lại chúng vào xcode và cuối cùng nó đã hoạt động.
dùng344977

21

Có một cách đơn giản để thiết lập và sử dụng Công cụ dòng lệnh - "synx" có sẵn trong github để thực hiện chính xác những gì cần thiết ở đây.

Nó sắp xếp lại thư mục dự án Xcode trong công cụ tìm để khớp với các nhóm Xcode trong dự án.

Bạn có thể tìm thấy nó ở đây: https://github.com/venmo/synx

CẬP NHẬT: XCode 9 hỗ trợ tính năng này theo mặc định. Vì vậy, không cần phải sử dụng các công cụ khác nữa!


Công cụ tuyệt vời nhưng cực kỳ chậm trong các dự án lớn hơn (có thể mất vài phút để hoàn thành công việc) và dường như không được hỗ trợ nữa.
Lukasz

6

Xcode 9

Có vẻ như Xcode 9 hiện hỗ trợ nó theo mặc định. Khi bạn di chuyển tệp từ nhóm này sang nhóm khác, tệp cũng sẽ được chuyển từ thư mục cũ sang thư mục mới. Điều này đã được công bố trong WWDC 2017.



2

Tôi thường di chuyển các tệp vào thư mục trực tiếp trong Finder, sau đó sửa các tệp có tên màu đỏ trong XCode trong hộp thoại "Nhận thông tin" của chúng: nhấp vào nút "Chọn ..." và chọn locatoin mới của tệp. Đó là phản hồi đầu tiên khi tôi muốn di chuyển tệp trong XCode và nó hoạt động.


1

Kể từ Xcode 4.5 khi bạn kéo vào cấu trúc thư mục, nó sẽ tự động được chuyển thành các nhóm lồng nhau trong Trình điều hướng dự án. Sau đó, nếu bạn nhìn vào đĩa (ví dụ nhấp chuột phải và chọn Hiển thị trong Finder), cấu trúc thư mục đã được giữ lại.

Tôi thấy cố gắng sửa chữa mọi thứ từ một dự án cũ chỉ là một nỗi đau. Hóa ra việc xóa các tệp này và kéo chúng lại dễ dàng hơn nhiều.


1

Để di chuyển một thư mục trong xcode 4.5 tôi chỉ ...

  1. Xóa các tệp / nhóm khỏi xcode và chọn "Xóa tham chiếu".
  2. Đi vào công cụ tìm và di chuyển thư mục / tập tin khi cần thiết.
  3. Sau khi hoàn thành, tôi quay lại Xcode và chọn File-> Add Files vào {ProjectName}.
  4. Đảm bảo "Sao chép các mục vào thư mục của Nhóm đích (Nếu cần)" được chọn
  5. Đảm bảo đã chọn "Tạo nhóm cho bất kỳ thư mục đã thêm" nào
  6. Đảm bảo "Thêm vào mục tiêu" được kiểm tra cho dự án của bạn

1

Kỹ thuật dễ nhất cho XCode 8 ....

Giả sử bạn có các tệp A, B, C trong một nhóm logic, nhưng muốn chúng được chuyển vào một thư mục trên ổ cứng của bạn.

  1. Tạo thư mục đích thông qua Finder
  2. Thêm thư mục trong XCode (Tệp -> Thêm tệp) bằng cách sử dụng ngăn Tùy chọn để chọn Tham chiếu thư mục (không phải nhóm)
  3. Kéo các tệp A, B, C từ nhóm (cũ) vào tham chiếu thư mục (mới) trong trình điều hướng dự án. XCode sẽ di chuyển các tệp vào thư mục, cả trong dự án và trên đĩa.

Làm xong.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.