fix crash when updating an existing entry

code clean up
This commit is contained in:
Trey t
2022-03-03 09:45:46 -06:00
parent 746337b6a2
commit 348229fe60
7 changed files with 20 additions and 52 deletions

View File

@@ -59,12 +59,18 @@ class PersistenceController {
editedDataClosure.append(closure)
}
public func runDataListeners() {
for closure in editedDataClosure {
closure()
public func saveAndRunDataListerners() {
do {
try viewContext.save()
for closure in editedDataClosure {
closure()
}
} catch {
print(error)
}
}
private func setupContainer() -> NSPersistentContainer {
if useCloudKit {
container = NSPersistentCloudKitContainer(name: "Feels")

View File

@@ -23,13 +23,7 @@ extension PersistenceController {
newItem.canDelete = true
newItem.entryType = Int16(entryType.rawValue)
do {
try viewContext.save()
runDataListeners()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
saveAndRunDataListerners()
}
func fillInMissingDates() {

View File

@@ -14,18 +14,9 @@ extension PersistenceController {
do {
try viewContext.executeAndMergeChanges(using: deleteRequest)
try viewContext.save()
runDataListeners()
saveAndRunDataListerners()
} catch let error as NSError {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
}
func delete(forDate: Date) {
if let entry = PersistenceController.shared.getEntry(byDate: forDate) {
viewContext.delete(entry)
try! viewContext.save()
runDataListeners()
}
}
}

View File

@@ -79,6 +79,7 @@ extension PersistenceController {
let items = PersistenceController.shared.getData(startDate: startDateOfMonth,
endDate: startDateOfMonth.endOfMonth,
includedDays: [1,2,3,4,5,6,7])
if !items.isEmpty {
allMonths[month] = items
}

View File

@@ -75,8 +75,7 @@ extension PersistenceController {
newItem.weekDay = Int16(Calendar.current.component(.weekday, from: date))
}
try viewContext.save()
runDataListeners()
saveAndRunDataListerners()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.

View File

@@ -10,34 +10,12 @@ import Foundation
extension PersistenceController {
@discardableResult
public func update(entryDate: Date, withModd mood: Mood) -> Bool {
do {
if let entry = PersistenceController.shared.getEntry(byDate: entryDate) {
viewContext.delete(entry)
}
try viewContext.save()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
guard let existingEntry = getEntry(byDate: entryDate) else {
return false
}
do {
add(mood: mood, forDate: entryDate, entryType: .listView)
try viewContext.save()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
return false
}
runDataListeners()
existingEntry.setValue(mood.rawValue, forKey: "moodValue")
saveAndRunDataListerners()
return true
}
}