mirror of
https://github.com/Mueller-Patrick/DHBW-Service-App.git
synced 2026-04-28 18:30:09 +00:00
🐛 Fixing bug where User data was not properly saved to CoreData
This commit is contained in:
@@ -51,7 +51,7 @@ struct PersistenceController {
|
||||
if self.context.hasChanges {
|
||||
do {
|
||||
try self.context.save()
|
||||
print("In CoreData.stack.save()")
|
||||
print("In PersistenceController.shared.save()")
|
||||
} catch {
|
||||
let nserror = error as NSError
|
||||
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// UtilityFunctions.swift
|
||||
// DHBW-Service
|
||||
//
|
||||
// Created by Patrick Müller on 22.12.20.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
class UtilityFunctions {
|
||||
public class func getCoreDataObject(entity: String) -> [NSManagedObject]{
|
||||
let managedContext =
|
||||
PersistenceController.shared.context
|
||||
|
||||
let fetchRequest =
|
||||
NSFetchRequest<NSManagedObject>(entityName: entity)
|
||||
|
||||
do {
|
||||
return try managedContext.fetch(fetchRequest)
|
||||
} catch let error as NSError {
|
||||
print("Could not fetch. \(error), \(error.userInfo)")
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
public class func deleteAllCoreDataEntitiesOfType(type: String) -> Bool{
|
||||
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: type)
|
||||
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
|
||||
|
||||
do {
|
||||
try PersistenceController.shared.context.execute(deleteRequest)
|
||||
|
||||
PersistenceController.shared.save()
|
||||
|
||||
return true
|
||||
} catch let error as NSError {
|
||||
print(error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ struct FirstOpeningSettings: View {
|
||||
.padding(.horizontal)
|
||||
Button(action: {
|
||||
self.settings.isFirstOpening = !self.settings.isFirstOpening
|
||||
self.saveToCoreData()
|
||||
}){
|
||||
Text("Confirm")
|
||||
.padding()
|
||||
@@ -47,6 +48,11 @@ struct FirstOpeningSettings: View {
|
||||
|
||||
extension FirstOpeningSettings{
|
||||
func saveToCoreData(){
|
||||
// Delete old user data
|
||||
let status = UtilityFunctions.deleteAllCoreDataEntitiesOfType(type: "User")
|
||||
print("Deleting old user data status: \(status)")
|
||||
|
||||
// Insert new user data
|
||||
let entity = NSEntityDescription.entity(forEntityName: "User", in: PersistenceController.shared.context)!
|
||||
let user = NSManagedObject(entity: entity, insertInto: PersistenceController.shared.context)
|
||||
user.setValue(name, forKey: "name")
|
||||
|
||||
@@ -10,10 +10,7 @@ import CoreData
|
||||
|
||||
struct HomeView: View {
|
||||
@EnvironmentObject var settings: LocalSettings
|
||||
@State var user: NSManagedObject = NSManagedObject()
|
||||
|
||||
|
||||
|
||||
@State private var name: String = ""
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
@@ -24,7 +21,7 @@ struct HomeView: View {
|
||||
}
|
||||
Text("Test")
|
||||
|
||||
// Text(user.value(forKey: "name") as! String)
|
||||
Text(self.name)
|
||||
|
||||
}.onAppear{
|
||||
self.readFromCoreData()
|
||||
@@ -33,15 +30,12 @@ struct HomeView: View {
|
||||
}
|
||||
|
||||
extension HomeView{
|
||||
func readFromCoreData(){
|
||||
let managedContext = PersistenceController.shared.context
|
||||
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "User")
|
||||
func readFromCoreData() {
|
||||
let fetchedData = UtilityFunctions.getCoreDataObject(entity: "User")
|
||||
|
||||
do {
|
||||
try print(managedContext.fetch(fetchRequest))
|
||||
self.user = try managedContext.fetch(fetchRequest)[0]
|
||||
} catch let error as NSError {
|
||||
print(error)
|
||||
if(!fetchedData.isEmpty) {
|
||||
let user = fetchedData[0]
|
||||
self.name = user.value(forKey: "name") as! String
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user