fix crash when updating an existing entry
code clean up
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,12 +52,11 @@ class HomeViewViewModel: ObservableObject {
|
||||
}
|
||||
|
||||
private func getGroupedData(addMonthStartWeekdayPadding: Bool) {
|
||||
grouped = PersistenceController.shared.splitIntoYearMonth()
|
||||
|
||||
var newStuff = PersistenceController.shared.splitIntoYearMonth()
|
||||
if addMonthStartWeekdayPadding {
|
||||
grouped = MoodEntryFunctions.padMoodEntriesForCalendar(entries: grouped)
|
||||
newStuff = MoodEntryFunctions.padMoodEntriesForCalendar(entries: grouped)
|
||||
}
|
||||
//
|
||||
grouped = newStuff
|
||||
numberOfItems = numberOfEntries
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user