ios - ObservableObject 不更新视图
问题描述
我创建了一个 Atmeter 作为 ObservableObject,以便我可以从我的应用程序中的多个点访问它。不幸的是,当@Published 变量压力发生变化时,视图没有更新。有人可以解释为什么吗?
我已经尝试过 {willSet {objectWillChange.send()} },它会触发但也不会更新视图!
高度计:
//
// Altimeter.swift
// iAlti_v2
//
// Created by Lukas Wheldon on 14.12.20.
//
import Foundation
import CoreMotion
import Combine
class Altimeter: CMAltimeter, ObservableObject {
static let shared = Altimeter()
@Published var pressure: Double = 0
func start() {
if Altimeter.isRelativeAltitudeAvailable() {
switch Altimeter.authorizationStatus() {
case .notDetermined: // Handle state before user prompt
debugPrint("CM: Awaiting user prompt...")
//fatalError("Awaiting CM user prompt...")
case .restricted: // Handle system-wide restriction
fatalError("CM Authorization restricted!")
case .denied: // Handle user denied state
fatalError("CM Authorization denied!")
case .authorized: // Ready to go!
debugPrint("CM Authorized!")
@unknown default:
fatalError("Unknown CM Authorization Status!")
}
Altimeter.shared.startRelativeAltitudeUpdates(to: OperationQueue.main) { data, error in
if let trueData = data {
//debugPrint(#function, trueData)
Altimeter.shared.pressure = trueData.pressure.doubleValue * 10
} else {
debugPrint("Error starting relative Altitude Updates: \(error?.localizedDescription ?? "Unknown Error")")
}
}
}
}
}
风景:
import SwiftUI
struct SwiftUIView: View {
var body: some View {
Text("\(Altimeter.shared.pressure)")
}
}
解决方案
这解决了我的问题:
@ObservedObject private var altimeter = Altimeter.shared
推荐阅读
- reactjs - 从父级到子级的状态更改未反映到 React Hook 中的 TextField
- polygon - Catias 3dxml 格式是否包含作为 Nurbs 的 CAD,或者它只是一个三角形/多边形网格?
- react-native - 删除标题特定页面
- ubuntu - VS 代码不再打开
- python - 如何使用 BeautifulSoup 和 Selenium 实现 if 语句
- c - 需要了解C中的一些指针
- dgraph - Dgraph:在您的 Golang 结构字段中始终使用 omitempty 是最佳实践吗?
- oop - 对应用设计模式感到困惑
- sql - 如何在oracle sql查询中提取括号之间有几行的字符串
- c# - 文档尚未打开 使用水晶报表