Как удалить исходные данные и очистить проект в Xcode 5 и более поздних версиях?

Можно ли выполнить процедуру, которая включает в себя запуск script в терминале, чтобы удалить все файлы в папке с производными данными и надежно очистить проект?

Иногда активы проекта не всегда обновляются на моем симуляторе или устройстве. Это в основном проб и ошибок, и когда я нахожу, что старый актив пробился в тестовую сборку, слишком поздно, не говоря уже о смущении!

Я рассмотрел этот вопрос, но он кажется немного устаревшим: Как очистить кеши и очистить все цели Xcode 4

Я также проверил этот вопрос, но я не хочу тратить время на Организатор, если мне не нужно: Как "Удалить производные данные" в Xcode6?

Я просмотрел другие сообщения там, но не нашел ничего, что решает проблему надежной очистки проекта и экономит время с помощью script.

Ответ 1

Это в основном двух-трехэтапный процесс, который очищает проект от всех кэшированных активов.

Конечно, если кто-либо использует эту технику, и проект по-прежнему не показывает обновленные активы, то добавьте ответ! Его определенно возможно, что кто-то там столкнулся с ситуациями, требующими шага, который я не включил.

  • Очистите проект с помощью Shift - Cmd - K
  • Удалить производные данные, вызвав оболочку script (подробнее см. ниже), определенную в вашем профиле bash
  • Удалите приложение из симулятора или устройства.
  • Для определенных типов активов вы также можете использовать reset Симулятор (в меню iOS Simulator)

Чтобы вызвать оболочку script ниже, просто введите имя функции (в данном случае "ddd" ) в ваш терминал, предположив ее в вашем профиле bash. После того как вы сохранили свой профиль bash, не забудьте обновить среду терминала, если вы сохранили ее, с помощью команды source:
source ~/.bash_profile

ddd() {
    #Save the starting dir
    startingDir=$PWD

    #Go to the derivedData
    cd ~/Library/Developer/Xcode/DerivedData

    #Sometimes, 1 file remains, so loop until no files remain
    numRemainingFiles=1
    while [ $numRemainingFiles -gt 0 ]; do
        #Delete the files, recursively
        rm -rf *

        #Update file count
        numRemainingFiles=`ls | wc -l`
    done

    echo Done

    #Go back to starting dir
    cd $startingDir
}

Я надеюсь, что это поможет, счастливое кодирование!