I'm working with UserDefaults im my ViewModel:
class SettingsViewModel: ObservableObject {
private let cancellable: Cancellable
private let defaults: UserDefaults
let objectWillChange = PassthroughSubject<Void, Never>()
private enum Keys {
static let channel1Value = "channel1_value"
static let channel2Value = "channel2_value"
}
var channel1Value : Double
{
set{ defaults.set(newValue, forKey: Keys.channel1Value)}
get {defaults.double(forKey: Keys.channel1Value)}
}
var channel2Value : Double
{
set{ defaults.set(newValue, forKey: Keys.channel2Value)}
get {defaults.double(forKey: Keys.channel2Value)}
}
init(defaults: UserDefaults = .standard) {
self.defaults = defaults
defaults.register(defaults: [
Keys.channel1Value : 95,
Keys.channel2Value : 95
])
cancellable = NotificationCenter.default
.publisher(for: UserDefaults.didChangeNotification)
.map { _ in () }
.subscribe(objectWillChange)
}
func resetDefaultsValue() {
channel2Value = 95
channel1Value = 95
} }
In my View:
struct SliderView: View {
@StateObject var vm: vm = SettingsViewModel()
var body: some View {
HStack {
Text("Text")
.frame(width: 100, alignment: .leading)
Slider(value: $vm.sliderValue, in: 0...100, step: 1){
Text("Text")
}.padding(.trailing,10) }
} }
On the line where the UserDefaults ist registered this warning occurs. "defaults.register(defaults: ["
[SwiftUI] Publishing changes from within view updates is not allowed, this will cause undefined behavior.
What should I modify?