You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何在@StateObjects间传递@Published变量?

SwiftUI中如何在两个ObservableObject类间传递@Published变量?

我查阅相关文档后,仍不清楚在SwiftUI中如何将Class A的@Published变量传递给Class B。我怀疑自己可能有根本性的理解偏差,因为下面的用例在我看来逻辑很清晰:

假设有两个ViewModel/Controller类:

  • LocationManager:负责持有并持续更新当前位置信息
  • PostManager:独立负责拉取与当前位置存在特定关联的帖子,并将结果存储在posts属性中

将这两个管理器分离可以让所有逻辑(及数据源)更条理清晰,无需直接嵌入视图。现在的问题是,如果这两个类都以@StateObject的形式存在于某个视图中,怎么让PostManager始终获取LocationManager的最新位置信息,从而定期自动拉取帖子(不需要任何视图输入)?

有评论建议用UserDefaults实现,但我觉得这只是临时方案,并非最优解。

代码示例

import Foundation
import SwiftUI

class LocationManager: ObservableObject {
    
    @Published var location: [Double] = []
    
    init() {
        // 执行持续更新位置的逻辑
    }
}

class PostManager: ObservableObject {
    
    @Published var posts: [LocationPost] = []
    
    init() {
        // 需要基于LocationManager的位置拉取帖子,但如何实时获取最新位置?
    }
}

class LocationPost {
    var text: String = ""
    var coordinates: [Double] = []
    
    convenience init(coordinates: [Double] = [], text: String? = nil) {
        self.init()
        self.coordinates = coordinates
        self.text = text ?? ""
    }
}

内容的提问来源于stack exchange,提问作者ambassador

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:31:03