فهرست منبع

fix for wrong thread access

polscm32 1 سال پیش
والد
کامیت
bce1878023
2فایلهای تغییر یافته به همراه9 افزوده شده و 9 حذف شده
  1. 7 7
      FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift
  2. 2 2
      Model/CoreDataStack.swift

+ 7 - 7
FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift

@@ -781,20 +781,20 @@ extension Bolus.StateModel {
         minCount = max(12, nonEmptyArrays.map(\.count).min() ?? 0)
         guard minCount > 0 else { return }
 
-        let (minResult, maxResult) = await Task.detached {
-            let minForecast = (0 ..< self.minCount).map { index in
+        async let minForecastResult = Task.detached {
+            (0 ..< self.minCount).map { index in
                 nonEmptyArrays.compactMap { $0.indices.contains(index) ? $0[index] : nil }.min() ?? 0
             }
+        }.value
 
-            let maxForecast = (0 ..< self.minCount).map { index in
+        async let maxForecastResult = Task.detached {
+            (0 ..< self.minCount).map { index in
                 nonEmptyArrays.compactMap { $0.indices.contains(index) ? $0[index] : nil }.max() ?? 0
             }
-
-            return (minForecast, maxForecast)
         }.value
 
-        minForecast = minResult
-        maxForecast = maxResult
+        minForecast = await minForecastResult
+        maxForecast = await maxForecastResult
     }
 }
 

+ 2 - 2
Model/CoreDataStack.swift

@@ -409,7 +409,7 @@ extension CoreDataStack {
         with ids: [NSManagedObjectID],
         context: NSManagedObjectContext
     ) async -> [T] {
-        await Task { () -> [T] in
+        await context.perform {
             var objects = [T]()
             do {
                 for id in ids {
@@ -421,7 +421,7 @@ extension CoreDataStack {
                 debugPrint("Failed to fetch objects: \(error.localizedDescription)")
             }
             return objects
-        }.value
+        }
     }
 }