2009-07-14 18 views
22

Hej, jestem stosunkowo nowa w Xcode i martwi mnie jedno, że dodając zasób, zostaje on dodany do katalogu najwyższego poziomu w moim katalogu projektu. Na przykład w tej chwili wszystkie moje obrazy znajdują się w katalogu najwyższego poziomu i sprawia, że ​​rzeczy wyglądają nieładnie. Wolałbym, na przykład, mieć katalog images/, a następnie podfoldery w tym celu do przechowywania obrazów dla pewnych rzeczy, takich jak ikony tab-bar/. czy to możliwe? Czy też konwencją jest przechowywanie wszystkiego w katalogu najwyższego poziomu?Organizacja i struktura zasobów Xcode

Ktoś z kanału #iphonedev na freenode opowiedział mi coś o regule procesu budowy, czy coś w tym stylu, wydawało mi się to zbyt skomplikowane. Pomyślałem, że nie powinienem się przejmować, i że większość ludzi po prostu trzymała rzeczy w katalogu głównym, biorąc pod uwagę złożoność rozwiązanie. Być może nie jest to aż tak skomplikowane, po prostu uznałem, że powinno być łatwiej.

Na przykład chciałbym również mieć podfolder dla moich widoków, np. views/, który przechowuje wszystkie moje pliki końcówek; obecnie wszystkie znajdują się w katalogu najwyższego poziomu. To samo dotyczy moich list nieruchomości.

Byłbym wdzięczny, gdybyś mógł mi powiedzieć, co to jest konwencja, wątpię, żeby po prostu przechowywać wszystko w katalogu najwyższego poziomu. Odnoszę się do rzeczywistego systemu plików, nie tylko do tworzenia "wirtualnych folderów" w Xcode do porządkowania rzeczy, ponieważ katalog najwyższego poziomu mojego projektu nadal będzie bałaganem. A jeśli uda się lepiej uporządkować sprawy, byłbym wdzięczny za szczegółową pomoc, jak to zrobić.

Myślę, że słyszałem, że w ostatecznym kompilacji cała struktura plików zostanie przyciśnięta do katalogu głównego. Nie mam nic przeciwko temu, chcę tylko, żeby wszystko było zorganizowane, podczas gdy pracuję nad moim projektem. Myślę, że właśnie tu pojawia się ta "zasada budowania", ale nie jestem pewien, jak i co robić.

Dzięki!

Odpowiedz

20

Oto nieco więcej wyjaśnienie sugestia Grahama:

  • Utwórz katalog zdjęć
  • Utwórz zdjęcia grupowe w Xcode
  • prawym przyciskiem myszy grupę i Get Info
  • „Wybierz .. . ", aby ustawić katalog grupy jako katalog obrazów

Teraz wszystko, co umieścisz w grupie obrazów, zostanie zapisane omatycznie przejdź do katalogu obrazów. To prawda, jeśli przeciągasz/upuszczasz z Xcode, z innych projektów lub z Findera, lub jeśli dodajesz nowe ... klikając prawym przyciskiem myszy na katalogu obrazów. (Zakłada to, że domyślne ustawienie "względne do grupy" pozostawia się w okienku informacyjnym.)

Będzie to działało dla wszystkiego, co umieścisz w tej grupie (NIB itp.).

W przypadku imageNamed: wystarczy podać nazwę podstawową.

Moja rekomendacja to utrzymywanie niewielkiej liczby katalogów systemu plików, a przede wszystkim organizowanie z grupami w Xcode. Ale zgadzam się, niewielka liczba katalogów systemu plików jest bardzo pomocna. Umieściłem cały mój kod źródłowy w katalogu klas (tylko dlatego, że Apple używał tej nazwy, wybrałbym "Źródła" lub coś takiego). Posiadam również katalog zasobów na najwyższym poziomie i ogólnie tworzę katalogi z obrazami i audio. Ale generalnie nie tworzę zbyt wielu prawdziwych katalogów. Dzięki temu rzeczy stają się trochę bardziej uporządkowane, ale ułatwiają grep i symbole wieloznaczne z powłoką.

Poza narzędziami powłoki, dużą zaletą organizowania przez grupy, a nie katalogi, jest wpływ na systemy kontroli wersji, takie jak subversion. Kiedy nagle uświadomisz sobie, że twoja grupa "Widoków" jest o wiele za duża, możesz ją zreorganizować, nie biorąc pod uwagę ogromnego wpływu przenoszenia plików.

+0

Dzięki, zrobiłem to dla mnie. Tak, nie zamierzam tego robić zbyt długo, przynajmniej miło jest mieć jakąś podstawową strukturę organizacyjną. Do tej pory mam obrazy/które zawiera obrazy/tab-bar i obrazy/odtwarzacz, a także listy właściwości/do przechowywania .plist plików i widoków/do przechowywania plików z nib. Myślałem o fizycznym tworzeniu folderu "Zasoby", ale nie wiem, jak to zrobić, zmieniając ścieżkę istniejącej grupy Zasoby do nowego folderu Zasoby? Lub tworząc grupę "Zasoby" w ramach istniejącej grupy Zasoby? –

+0

Skończyłem ponownie, robiąc to, dodając folder (y) jako odniesienia do folderu. Czytałem gdzieś, że oznacza to, że folder będzie śledzony, więc kiedy dodaję/usuwam pliki, nie muszę nic robić po stronie Xcode. Nie wiem, czy spowoduje to później problemy. –

+1

Przepraszamy za spam w komentarzu. Okazuje się, że odwołanie do folderu oznacza, że ​​utworzyło tę strukturę folderów w wynikowym pliku .app. Rozwiązaniem było utworzenie zasobów/w katalogu najwyższego poziomu z pod-katalogami obrazów /, widoków/itd., A następnie przeciągnięcie tych podkatalogów do grupy Zasoby po lewej stronie i dodanie ich jako grup. Teraz wygląda tak, jak chcę wyglądać w systemie plików i nadal wygląda zorganizowany w Xcode. –

2

To naprawdę naprawdę łatwo dostać się z miejsca, w którym chcesz być. Utwórz folder images/ i umieść w nim wszystkie obrazy. Teraz w oknie projektu w Xcode pliki obrazów zmieniły kolor na czerwony, ponieważ nie są już na miejscu. Pobierz informacje o nich i "Wybierz ..." nową lokalizację.

Należy pamiętać, że tylko dlatego, że plik został przeniesiony do źródłowego systemu plików (znany jako $SRCROOT), nie ma żadnych zmian w sposobie używania pliku w produkcie. Jeśli zostanie skopiowany do Contents/Resources/ przed przeniesieniem pliku, to tam zostanie skopiowany później. W miejscu docelowym nie zostaną dodane żadne podfoldery.

+0

Dzięki! Czy to też działa z plikami nib i listami właściwości? Kiedy ładuję je w moim kodzie, na przykład obrazie, czy mogę zrobić imageNamed: @ "file.png" lub imageNamed: @ "path/to/my/file.png"? –

3

Życie jest trudne dla IDE. Muszą pośredniczyć między światem systemów plików , gdzie kompilator, z plikami źródłowymi na żywo, a światem UI świata, gdzie pracują programiści.

W dawnych czasach, które tworzyły współczesną kulturę kodowania, wszyscy, kompilatorzy i ludzie, żyli w systemie plików. Więc dzisiaj nadal mamy tendencję do myślenia, że ​​chcemy kontrolować, gdzie źródła i zasoby znajdują się na dysku. To dobrze, ponieważ możemy potrzebować dokładnie wiedzieć, jakie kompilatory jedzą.

W każdym razie, jeśli uważasz, że IDE jest tak samo jak frontend dla zabawnego systemu baz danych kodu źródłowego i jeśli naprawdę masz pełną pewność co do jego możliwości i funkcji (co rzadko się zdarza), możesz dojść do wniosku, że jeśli po prostu nie dbasz o system plików, możesz mieć lepsze życie, jako programista (i jako człowiek).

Masz rację zastanawiając się, bo Xcode nie jest bardzo dobra, ani przyjazny kodu systemu plików o organizacji i osób, które są (słusznie), że będzie wrażliwy na dowiedzieć się, jak przenieść pliki na ich prawej folderu na dysku, a na ich prawo Grupa Xcode. Jeśli użyjesz opcji "Utwórz odniesienia do folderów dla dowolnych dodanych folderów", musisz mieć relację 1: 1.

Ale zobaczysz wiele osób i wiele przykładów projektów z Apple itsef, które używają prostego, płaskiego drzewa systemu plików z tym samym folderem.

Moja rada jest taka, że ​​przynajmniej grupujesz publiczne nagłówki i zasoby w różnych folderach, coś w stylu Java/Maven, ale nie ma uniwersalnej konwencji.

+0

Dzięki, ale nigdy nie powiedziałem, że Xcode jest do tego wciągnięty. Jestem dla niego nowy i zastanawiam się, jak to się robi, i czy należy to zrobić. Chodzi o to, że kiedy przeglądam moje repozytorium github, wygląda to naprawdę niechlujnie z tym, że wszystko znajduje się w katalogu najwyższego poziomu. –

+0

Przepraszam, nie chciałem być niegrzeczny. Wiem, że się zastanawiałeś, miałem te same problemy jakiś czas temu. Zmienię to sformułowanie. – IlDan

+0

Nie ma problemu, dzięki za odpowiedź. To wyczyściło kilka rzeczy. –

5

Przyjęta odpowiedź nie działa dla mnie w Xcode 4.3.2. Wygląda na to, że usunęli opcję menu "Pobierz informacje". Zamiast tego zrobiłem to:

  1. Utworzono katalog na dysku, gdzie go chciałem.

  2. Poszedłem do menu Plik

  3. kliknięciu prawym przyciskiem myszy na grupie chciałem dodać do

  4. wybraniu „Dodaj pliki do Nazwa_projektu”

  5. dodał pliki z katalogu utworzonego w (1)