Хранилища Xcode и ресурсы

У меня есть несколько ресурсов в моем приложении для iPhone, и когда они компилируются, все они добавляются в корневую папку ресурсов в приложении, независимо от структуры группировки Xcode. Это прекрасно для большинства вещей, однако есть набор файлов, которые мне нужно структурировать в папке в папке ресурсов приложений.

В настоящий момент я добавил свои папки в Xcode, используя "Добавить существующие файлы... → Создать ссылки на папки для добавленных папок". Это прекрасно, и значки папок в Xcode являются синими, а не желтыми. Моя проблема заключается в том, что Xcode не замечает и не изменяет файлы в этих папках, и поэтому при создании моего проекта ни одно из новых или измененных изображений в целевых ресурсах приложения. Единственный способ, которым я могу заставить его работать, - это сделать чистую, а затем сборку, которая очень раздражает, поскольку я делаю изменения и перекомпилирую, может быть, несколько раз в минуту иногда!

Моя структура папок в моих ресурсах, которые я хочу сохранить в приложении, состоит из нескольких вложенных файлов и папки.

Есть ли способ получить Xcode для распознавания всех файлов и папок, которые были изменены или новы?

Спасибо,

Mike

Ответ 1

Моя проблема заключается в том, что Xcode не замечает и не изменяет файлы в этих папках, и поэтому, когда я создаю свой проект, ни одно из новых или измененных изображений в целевых ресурсах приложения.

Это давняя ошибка; он много раз укусил меня во время работы над Adium. Пожалуйста, напишите его в RadarWeb. И спасибо за напоминание; Я подал свой собственный отчет об ошибке в виде x-радара://проблема/7232149 (видна публике в OpenRadar). Вы должны указать этот номер ошибки в своем отчете об ошибке.

В качестве обходного пути вы можете щелкнуть правой кнопкой мыши ссылку на папку и выбрать "Touch", чтобы указать Xcode, что папка изменилась.

Ответ 2

я имел свою первую проблему себя сегодня и я нашел эту статью, в которой говорит о второй проблеме также: http://majicjungle.com/blog/?p=123

Ответ 3

Я просто укусил эту ошибку. Ответы, приведенные здесь, были большой помощью.

Я тоже нашел ответ в этом другом потоке, но я не уверен, что это действительно безопасная вещь (кажется, создается новый AppId или что-то еще):

Ресурсы симулятора iphone не обновляются

Это мои личные заметки, которые я сделал, чтобы обходиться с ними.

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: Хорошо, я следовал инструкциям "ответа" от поста Питера Хосей выше, и это тоже работает. Вероятно, лучше, чем мое решение здесь, потому что мой шаг 4 (обязательно), кажется, регенерирует ключ приложения или что-то в этом роде.

Итак, как я исправил его в Xcode 4.0 после сообщения Peter:

 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

Ответ 4

если вы хотите сохранить структуру каталогов, лучше всего это сделать в каталоге документов. На начальном запуске приложений скопируйте файлы из пакета в каталог документов в иерархии, которую вы предпочитаете.

EDIT: после выяснения кажется, что вам, вероятно, просто нужно добавить некоторые пути поиска заголовков к вашему проекту. Откройте панель сведений о целях, перейдите в раздел сборки и добавьте корневую папку структур в список путей поиска заголовков. Проверьте рекурсивность, и вы должны быть лучше