#swift #swiftui #xcode12
#swift #swiftui #xcode12
Вопрос:
Похоже, предварительные просмотры перестали работать в Xcode 12! Попытка предварительного просмотра шаблона файла SwiftUI и получение ошибки ниже. Есть идеи, как это исправить? Пытался очистить папку сборки, удалить производные данные и перезапустить Xcode, но безрезультатно!
На Каталине 10.15.6.
RemoteHumanReadableError: Failed to update preview.
The preview process appears to have crashed.
Error encountered when sending 'prepare' message to agent.
==================================
| RemoteHumanReadableError: The operation couldn’t be completed. (BSServiceConnectionErrorDomain error 3.)
|
| BSServiceConnectionErrorDomain (3):
| ==BSErrorCodeDescription: OperationFailed
Код, который я пытаюсь просмотреть (из нового шаблона файла SwiftUI):
import SwiftUI
struct SwiftUIView: View {
var body: some View {
Text("Hello, World!")
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
Комментарии:
1. Похоже на ошибку Xcode, может помочь очистка производных данных или просто перезапуск Xcode
2. Удалил все, что мог, производные данные, папку сборки. и перезапустил Xcode несколько раз, нет, все еще не работает!
3. Может быть, вы включили предварительный просмотр на устройстве? Я знаю, что это бесполезно, но ошибка Xcode может возникнуть по многим причинам
4. Я включил / выключил предварительный просмотр на устройстве, но все еще не могу заставить его работать. На самом деле, похоже, что это обычная проблема с Xcode 12, многие люди сообщают о проблемах с предварительным просмотром, но решения на горизонте нет!
5. Вы пытались стереть состояние приложения Xcode рядом с производными данными? Состояние приложения Xcode сохраняется в path
~/Library/Saved Application State/com.apple.dt.Xcode.savedState
Ответ №1:
Если вы SwiftUIView
используете ObservableObject
as environmentObject
, попробуйте это:
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView().environmentObject(YourObservableObjectClass())
}
}
Ответ №2:
По-видимому, это была ошибка с Firestore, которая, скорее всего, является причиной: сбой предварительного просмотра XCode 12 при добавлении Firebase SDK Swift UI 2.0. Лучшим решением на данный момент является вызов pod update, который должен решить проблему. Я проверил на Xcode 12, iOS 13 .
Ответ №3:
если вы используете SwiftUI (ObservableObject, @EnvironmentObject)
добавить в предварительные просмотры
.environmentObject(ModelData())
—
struct LandmarkDetail_Previews: PreviewProvider {
static var previews: some View {
LandmarkDetail(landmark: ModelData().landmarks[1])
.environmentObject(ModelData())
}
}
мои модельные данные
final class ModelData:ObservableObject
{
@Published var landmarks: [Landmark] = load("landmarkData.json")
}
Ответ №4:
Ошибка: не удается выполнить предварительный просмотр в этом файле
Комментарий @kerim.ba сработало на меня:
Вы пытались стереть состояние приложения Xcode рядом с производными данными? Состояние приложения Xcode сохраняется в path
~/Library/Saved
Application State/com.apple.dt.Xcode.savedState
Ответ №5:
Мне удалось решить эту проблему. Достаточно прокомментировать все в didFinishLaunchingWithOptions
методе. Затем при предварительном просмотре SwiftUI он будет работать.
Ответ №6:
У меня была такая же проблема, когда я обновлял Firebase Analytics (до версии 6.33.0). Закомментирование следующей строки исправило это.
FirebaseApp.configure()
Комментарии:
1. Нет. Это на 100% воспроизводимо с включенным вызовом Firebase. Скопируйте приведенный выше код в совершенно новый проект, это работает?
2. У меня не сработало, это очень странно. Теперь появляется ошибка,
MessageSendingError: Connection interrupted: send previewInstances message to agent
.3. Как упоминалось Стэнфордом выше, это больше не проблема в Firebase версии 6.34.0.