Showing 1 changed files with 10 additions and 14 deletions
+10 -14
USB Meter/Model/AppData.swift
@@ -11,19 +11,13 @@ import Combine
11 11
 import CoreBluetooth
12 12
 
13 13
 final class AppData : ObservableObject {
14
-    
15
-    
16
-    let objectWillChange = ObservableObjectPublisher()
17
-    private var userDefaultsNotification: AnyCancellable?
18 14
     private var icloudGefaultsNotification: AnyCancellable?
19 15
     private var bluetoothManagerNotification: AnyCancellable?
16
+
20 17
     init() {
21
-        userDefaultsNotification = NotificationCenter.default.publisher(for: UserDefaults.didChangeNotification).sink { _ in
22
-            self.objectWillChange.send()
23
-        }
24 18
         icloudGefaultsNotification = NotificationCenter.default.publisher(for: NSUbiquitousKeyValueStore.didChangeExternallyNotification).sink(receiveValue: test)
25 19
         bluetoothManagerNotification = bluetoothManager.objectWillChange.sink { [weak self] _ in
26
-            self?.objectWillChange.send()
20
+            self?.scheduleObjectWillChange()
27 21
         }
28 22
         //NotificationCenter.default.publisher(for: NSUbiquitousKeyValueStore.didChangeExternallyNotification).sink(receiveValue: { notification in
29 23
         
@@ -33,11 +27,7 @@ final class AppData : ObservableObject {
33 27
     
34 28
     @Published var enableRecordFeature: Bool = true
35 29
     
36
-    @Published var meters: [UUID:Meter] = [UUID:Meter]() {
37
-        willSet {
38
-            self.objectWillChange.send()
39
-        }
40
-    }
30
+    @Published var meters: [UUID:Meter] = [UUID:Meter]()
41 31
     
42 32
     @ICloudDefault(key: "MeterNames", defaultValue: [:]) var meterNames: [String:String]
43 33
     @ICloudDefault(key: "TC66TemperatureUnits", defaultValue: [:]) var tc66TemperatureUnits: [String:String]
@@ -68,8 +58,14 @@ final class AppData : ObservableObject {
68 58
                 }
69 59
             }
70 60
             if somethingChanged {
71
-                self.objectWillChange.send()
61
+                scheduleObjectWillChange()
72 62
             }
73 63
         }
74 64
     }
65
+
66
+    private func scheduleObjectWillChange() {
67
+        DispatchQueue.main.async { [weak self] in
68
+            self?.objectWillChange.send()
69
+        }
70
+    }
75 71
 }