В строке темы сказано все.
Когда я запускаю код из 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение