2009-09-17 29 views
10

Mam kilka zasobów w mojej aplikacji na iPhone'a, a po ich skompilowaniu wszystkie są dodawane do katalogu głównego folderu zasobów w aplikacji, niezależnie od struktury grupowania Xcode. Jest to dobre dla większości rzeczy, jednak istnieje zestaw plików, które muszę mieć uporządkowane w folderze w folderze zasobów aplikacji.Foldery budynków i zasobów Xcode

W tej chwili dodałem moje foldery do Xcode za pomocą "Dodaj istniejące pliki ... -> Utwórz odniesienia do folderów dla dodanych folderów". To jest w porządku, a ikony folderów w Xcode są niebieskie, a nie żółte. Moim problemem jest to, że Xcode nie zauważa i nie zmienia nowych plików w tych folderach, a zatem kiedy buduję swój projekt, żaden z nowych lub zmienionych obrazów nie znajduje się w zasobach aplikacji docelowej. Jedynym sposobem, w jaki mogę go uruchomić, jest zrobienie czystego, a następnie zbudowanie, co jest dość denerwujące, ponieważ dokonuję zmian i ponownie kompiluję czasami kilka razy na minutę!

Moja struktura folderów w moich zasobach, które chcę przechowywać w aplikacji, składa się z kilku zagnieżdżonych plików i folderów.

Czy jest jakiś sposób, aby Xcode rozpoznało wszystkie pliki i foldery, które uległy zmianie lub są nowe?

Dzięki,

Mike

Odpowiedz

10

Moim problemem jest to, że Xcode nie zauważać i nowy lub zmieniłem pliki w tych folderach, a zatem kiedy buduję swój projekt, żaden z nowych lub zmienionych obrazów nie znajduje się w zasobach aplikacji docelowej.

Jest to od dawna występujący błąd; ugryzł mnie już wiele razy podczas pracy nad Adium. Proszę złożyć go w RadarWeb. I dzięki za przypomnienie; Złożyłem swój własny raport o błędzie jako x-radar: // problem/7232149 (visible to the public in OpenRadar). Powinieneś wspomnieć o tym numerze błędu w swoim własnym raporcie o błędach.

Aby obejść ten problem, można kliknąć prawym przyciskiem myszy odniesienie do folderu i wybrać "Dotknij", aby poinformować Xcode o zmianie folderu.

+0

Dzięki za te informacje. Nie mogę uwierzyć, że tego nie zrobili! Dowiedziałem się nawet, że dotykanie folderów nie działa, być może dlatego, że w grę wchodzi zagnieżdżanie. –

+1

Michael Waterfall: Tak; musisz dotknąć konkretnego folderu dodanego do projektu. Dotykanie czegokolwiek, w tym dowolnego podfolderu, nie zadziała (a przynajmniej nie ostatni raz, kiedy go wypróbowałem, co było jakiś czas temu). –

+0

Chciałbym dodać kolejne obejście. Próbowałem wybrać dotyk, jak powiedział Peter Hosey, ale nie pomogło. To co zrobiłem to skopiować folder z folderu projektu, usunąć i przenieść do kosza stary folder, ponownie uruchomić xcode i dodać folder, jak zwykle kopiuje pliki z opcją folderów. – Pacu

-1

jeśli chcesz zachować strukturę katalogów, to najlepiej zrobić to w katalogu dokumentów. Przy pierwszym uruchomieniu aplikacji skopiuj pliki z pakietu do katalogu dokumentów w preferowanej hierarchii.

EDYCJA: po wyjaśnieniu wydaje się, że prawdopodobnie trzeba dodać kilka ścieżek wyszukiwania nagłówka do projektu. Otwórz okienko informacyjne celów, przejdź do sekcji kompilacji i dodaj swój folder główny struktury do listy ścieżek wyszukiwania nagłówków. Sprawdź rekurencyjne i powinno być lepiej

+0

Problemem jest folderu nie istnieje w wiązce bez użycia referencje folderów i budowania projektu w ten sposób. I to jest budynek, z którym mam problem. Obsługa folderów w pakiecie jest w porządku. Po prostu potrzebuję Xcode, aby rozpoznać nowe pliki i foldery w plikach mojego projektu na każdej kompilacji, tak aby kompilowały je do celu bez konieczności czyszczenia i odbudowywania za każdym razem. –

+0

Myślę, że powinieneś grać ze ścieżkami wyszukiwania nagłówków. – coneybeare

+1

Ścieżki wyszukiwania nagłówków są dla #include, a nie dla zasobów. –

4

miałem swój pierwszy problem sobie dzisiaj i znalazłem ten wspaniały artykuł, który mówi o drugim problemem także: http://majicjungle.com/blog/?p=123

+0

Dzięki za świetny link. Próbowałem używać skryptu, ale nie dotyka on żadnych plików w podfolderach. Masz pomysł, jak zmusić go do wielokrotnego dotknięcia plików w podfolderach? –

3

Właśnie zostałem ukąszony przez ten błąd. Odpowiedzi podane tutaj były bardzo pomocne.

znalazłem odpowiedź w tym innym wątku zbyt przydatny, ale nie jestem pewien, czy to jest rzeczywiście bezpieczne rzecz do zrobienia (wydaje się, aby wygenerować nowy AppId lub coś):

iphone simulator resources not updating

Oto moje osobiste notatki, które zrobiłem, aby to obejść.

1) Open the project in Xcode 
2) Right-click the folder reference (BLUE folder) in the navigator 
    at its root and pick "Remove Reference" 
3) Close Xcode all the way 
4a) Warning, this step might cause other problems in your project. 
4b) Open the folder browser/Finder 
4c) Navigate to: /users/USERNAME/Library/Application Support/ 
      /iPhone Simulator/version/Applications/THISPROJFOLDER 
4d) Delete this whole THISPROJFOLDER. The name of the folder may be all 
    numbers, but this clears the Xcode "Cache" so it will rebuild things 
5) Find the actual folder where you store your pictures that were referenced, 
    and move the folder elsewhere and rename it. 
6) Now open Xcode 
7) In Xcode, select Product -> Clean. It should clean successfully. 
8) Now run the program through Xcode. It should run, but (hopefully) crash or 
    otherwise fail because it doesn't detect the resource files you removed. 
9) Now go standard Xcode usage and add the files back to the folder you want, 
    and add a reference to that folder in the Xcode navigator. Run the program 
    again, and it should detect the UPDATED PDFfiles/Imagefiles. 

EDIT: Okay, I po "Odbierz" instrukcji z postu Petera Hosey jest powyżej, i że działa zbyt. Prawdopodobnie lepsze niż moje rozwiązanie tutaj, ponieważ mój krok 4 (wymagany) wydaje się odzyskać klucz aplikacji lub coś podobnego.

Więc oto jak naprawiłem go w Xcode 4.0 po postu Piotra:

1) Open your project in Xcode 
2) Select the main project root item in the Navigator 
3) Select "Build Phases" in the main pane 
4) Select "Add Build Phase" button -> "Add Run Script" 
5) Reposition he "Run Script" entry bar in the screen, 
    and move it to just-before the Copy Bundle Resources area 
6) Edit the run-script you just added in the main pane: 
    : Set Shell to: /bin/sh (its the default, or try /bin/tsch) 
    : Set the script line to: touch -cm ${SRCROOT}/MyDocs 
    (Set it to your folder root area, matching the Blue Folder 
    area in your Navigator) 
7) Save it all and select "Product -> Clean" to clean project 
+0

Każdy, kto jest w stanie pomóc, korzystając z tego, otrzymuję komunikat o błędzie ..../bin/sh /: bad interpreter: not a directory – LmC

Powiązane problemy