В XCode 12, если я создам новое приложение SwiftUI и отмечу кнопку «Использовать основные данные», полученное приложение (без изменений) покажет пустой экран в симуляторе (а также на устройстве). В предварительном просмотре он показывает примерные отметки времени, как и ожидалось. Почему на симуляторе / устройстве не отображаются временные метки в качестве примера?
SwiftUI с Core Data получает пустой экран в симуляторе в Xcode 12
Ответы (4)
Если вы хотите увидеть образцы входных данных из шаблона (10 строк с отметкой времени) в вашем симуляторе, вам необходимо изменить в App.swift:
пусть persistenceController = PersistenceController.shared
to
пусть persistenceController = PersistenceController.preview
Без этого изменения шаблон, предоставленный Apple, показывает образец ввода только в предварительном просмотре холста ContentView. В файле Persistence.swift есть две статические переменные: общая и предварительный. .Shared просто запускает (пустой) PersistenceController, в то время как статическая переменная .preview инициирует PersistenceController, добавляет десять элементов с текущей меткой времени в viewContext и сохраняет его.
Код по умолчанию для элементов панели инструментов не работает в SwiftUI: используйте его в коде шаблона. Вставьте список в NavigationView, а затем кнопки в HStack.
var body: some View {
NavigationView { //added
List {
ForEach(items) { item in
Text("Item at \(item.timestamp!, formatter: itemFormatter)")
}
.onDelete(perform: deleteItems)
} .toolbar {
#if os(iOS)
HStack { //added
EditButton()
Button(action: addItem) {
Label("Add Item", systemImage: "plus")
}
}//added
#endif
}
}//added NavView embed
}
Кроме того, чтобы предварительный просмотр работал, вам необходимо изменить PersistenceController на общий, а не на предварительный просмотр.
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environment(\.managedObjectContext, PersistenceController.shared.container.viewContext)
}
}
Очистка данных в симуляторе у меня не сработала.
Я борюсь с .toolbar, но обнаружил, что он работает только с NavigationView в выпущенном XCode 12.
Поэтому, если вы используете шаблон, который появляется, когда вы щелкаете, чтобы использовать Core Data, просто добавьте в ContentView.
очистка данных в симуляторе в разделе «Устройство» - ›Стереть все содержимое и настройки у меня сработали.