SwiftUI: автоматическое обновление предварительного просмотра приостановлено, всегда

12

У меня есть существующее приложение, в основном приложение со списком покупок, в которое я пытаюсь добавить сладкую сладкую любовь SwiftUI.

Моя проблема в том, что обновление предварительного просмотра в реальном времени не работает - постоянно отображается предупреждение «Автоматическое обновление предварительного просмотра приостановлено». Я нажимаю кнопку возобновления, он создает приложение, показывает текущий вид, и это предупреждение сразу же появляется снова. Я никогда не вижу изменений в коде, отраженном на холсте, без использования кнопки возобновления.

Это происходит в Xcode 11.1 и 11.2 beta 2. Я буквально не могу найти никакого другого упоминания об этом ни здесь, ни на SO, и есть одна ветка без ответов на форумах разработчиков Apple.

Брайан М
источник
Я заметил, что предварительный просмотр также часто останавливается для меня ... Единственные вещи, которые я могу изменить, которые не делают паузу, это очень незначительные вещи, такие как настройка текста, отображаемого в текстовом представлении ... Делайте небольшие изменения, как это тоже заставить его сделать паузу для вас?
Куинн
@Quinn - да, еще до того, как я внес изменения, появляются кнопка предупреждения и возобновления. Они отображаются еще до того, как сборка резюме завершена, и отображается предварительный просмотр. Я не могу сделать какие-либо изменения, которые видны без использования резюме.
Брайан М

Ответы:

6

Если у вас есть пользовательские фазы запуска сценариев в фазах сборки, и вы не хотите (или не можете) удалять их, попробуйте установить флажок «Запускать сценарий только при установке».

введите описание изображения здесь

Качпер Дзюбек
источник
Это то, что вызывало это в моем случае - у меня был скрипт для автоматического увеличения номера сборки. Хорошо поймал. Спасибо.
raffjones
Хороший ответ - это лучше, чем то, что мне порекомендовала поддержка Apple, потому что это сохраняет работоспособность. Я перенес принятый ответ на ваш :)
Брайан М
8

Я отправил отзыв в Apple, и они ответили исправлением. У меня есть сценарий сборки в цели, который автоматически увеличивает номер сборки. Если я удалю этот сценарий, тогда предварительный просмотр будет работать как задумано.

Так что, если у вас возникла эта проблема, удалите что-нибудь в Target -> Build Phases -> Run Script и попробуйте снова. Предварительный просмотр холста должен обновиться, как и следовало ожидать.

Брайан М
источник
1
У меня нет никаких скриптов сборки, но я все еще получаю эту проблему в Xcode 11.2.1.
Исуру
То же самое. Я использую Xcode 11.3, и внезапно это начало происходить, и удаление этапов сценария не исправляет это.
Паку
1
Та же проблема здесь с Xcode 11.3.1, работающим на 10.15.2 (без сценариев). Если я нажимаю «Возобновить», панель холста просто исчезает, и при повторном открытии холста появляется предупреждение. Я отказался от SwiftUI в бета-версии в прошлом году, после того, как обнаружил слишком много ошибок, вернулся к нему и подумал, что он наверняка сработает, но нет. Инструменты полностью мусорные и не работают вообще. Даже создавая новый, чистый проект Swift UI, он сразу сломался. Я надеюсь, что Apple исправит эти ужасные ошибки, потому что SwiftUI так много обещает, но оставляет плоды во рту разработчиков. Может быть, Xcode 12 + 10,6.
Бен Шталь
Спасибо за подсказку, это помогло. Но учтите, что это может повлиять на каждый скрипт выполнения в каждой цели, которая будет содержаться в вашем приложении, например в расширениях приложений и приложениях Watch.
Корактор
Спасибо, у меня была эта проблема, но это был скрипт версии, работающий во встроенной среде, который затем приостанавливал предварительный просмотр. Я был на совершенно неверном пути, думая, что это как-то связано с Core Data и превью.
Dlemex
3

Для меня Canvas не работал, когда у меня была Legacy Build System.

Вы можете изменить это через,

Файл -> Настройки рабочего пространства -> Система сборки -> Выбрать «Новая система сборки (по умолчанию).

Как говорится, это вариант по умолчанию. Если по какой-либо причине была выбрана система сборки Legacy, Canvas не будет работать.

Imthath
источник