В строке темы сказано все.
Когда я запускаю код из Xcode, запись сохраняется, но без значений, когда я снова запускаю приложение из Xcode, чтобы проверить, правильно ли сохраняются записи. Однако когда я запускаю приложение прямо из симулятора, оно работает нормально. И во время работы из симулятора я убиваю приложение в фоновом режиме, чтобы убедиться, что оно перезапускается с самого начала. Он просто отлично работает.
Здесь я загрузил два видео — «Запуск из Xcode» и «Запуск из симулятора», чтобы показать проблему и то, как она работает нормально при запуске непосредственно из симулятора.
Код SwiftData, который я использую:
Приложение:
import SwiftUI
import SwiftData
@main
struct PennywiseApp: App {
var sharedModelContainer: ModelContainer = {
let schema = Schema([
Transaction.self,
Category.self
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
do {
return try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(sharedModelContainer)
}
}
Просмотреть декларацию:
struct Categories: View {
@State var selectedCategory: Int = 0
@State var showNewCategory: Bool = false
@Environment(\.modelContext) var modelContext
@State private var path = [Category]()
@Query var categories: [Category]
Стек навигации и список:
NavigationStack(path: $path) {
List {
Section {
ForEach(filteredCategories) { category in
NavigationLink(value: category) {
Circle()
.stroke(Color(hex: category.hex) ?? Color.blue, lineWidth: 3)
.fill(Color(hex: category.hex) ?? Color.blue)
.frame(width: 25, height: 25)
Text("\(category.name)")
}
}
.onDelete(perform: deleteCategory)
}
}
.navigationTitle("Categories")
.navigationDestination(for: Category.self) { category in
NewCategory(category: category)
}
Добавить и удалить функции:
func addCategory() {
var category: Category
if selectedCategory == 0 {
category = Category(name: "", hex: "", transactionType: TransactionType.Income)
} else {
category = Category(name: "", hex: "", transactionType: TransactionType.Expense)
}
modelContext.insert(category)
try! modelContext.save()
path.append(category)
}
func deleteCategory(at offsets: IndexSet) {
for offset in offsets {
modelContext.delete(filteredCategories[offset])
}
try! modelContext.save()
}
Второй вид:
struct NewCategory: View {
@State var selectedFlow: Int = 0
@Bindable var category: Category
var pickerColor: Binding { //
Подробнее здесь: https://stackoverflow.com/questions/793 ... app-is-ind
SwiftData не сохраняет данные при запуске из Xcode, но работает нормально, когда приложение запускается независимо в сим ⇐ IOS
Программируем под IOS
1736360778
Anonymous
В строке темы сказано все.
Когда я запускаю код из Xcode, запись сохраняется, но без значений, когда я снова запускаю приложение из Xcode, чтобы проверить, правильно ли сохраняются записи. Однако когда я запускаю приложение прямо из симулятора, оно работает нормально. И во время работы из симулятора я убиваю приложение в фоновом режиме, чтобы убедиться, что оно перезапускается с самого начала. Он просто отлично работает.
Здесь я загрузил два видео — «Запуск из Xcode» и «Запуск из симулятора», чтобы показать проблему и то, как она работает нормально при запуске непосредственно из симулятора.
Код SwiftData, который я использую:
Приложение:
import SwiftUI
import SwiftData
@main
struct PennywiseApp: App {
var sharedModelContainer: ModelContainer = {
let schema = Schema([
Transaction.self,
Category.self
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
do {
return try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(sharedModelContainer)
}
}
Просмотреть декларацию:
struct Categories: View {
@State var selectedCategory: Int = 0
@State var showNewCategory: Bool = false
@Environment(\.modelContext) var modelContext
@State private var path = [Category]()
@Query var categories: [Category]
Стек навигации и список:
NavigationStack(path: $path) {
List {
Section {
ForEach(filteredCategories) { category in
NavigationLink(value: category) {
Circle()
.stroke(Color(hex: category.hex) ?? Color.blue, lineWidth: 3)
.fill(Color(hex: category.hex) ?? Color.blue)
.frame(width: 25, height: 25)
Text("\(category.name)")
}
}
.onDelete(perform: deleteCategory)
}
}
.navigationTitle("Categories")
.navigationDestination(for: Category.self) { category in
NewCategory(category: category)
}
Добавить и удалить функции:
func addCategory() {
var category: Category
if selectedCategory == 0 {
category = Category(name: "", hex: "", transactionType: TransactionType.Income)
} else {
category = Category(name: "", hex: "", transactionType: TransactionType.Expense)
}
modelContext.insert(category)
try! modelContext.save()
path.append(category)
}
func deleteCategory(at offsets: IndexSet) {
for offset in offsets {
modelContext.delete(filteredCategories[offset])
}
try! modelContext.save()
}
Второй вид:
struct NewCategory: View {
@State var selectedFlow: Int = 0
@Bindable var category: Category
var pickerColor: Binding { //
Подробнее здесь: [url]https://stackoverflow.com/questions/79339661/swiftdata-not-persisting-data-when-run-from-xcode-but-works-fine-when-app-is-ind[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия