加载视图时SwiftUI图像不更新其URL

加载视图时SwiftUI图像不更新其URL,swift,swiftui,core-location,appdelegate,combine,Swift,Swiftui,Core Location,Appdelegate,Combine,我有一个类UserLocation的全局对象,它在AppDelegate.swift中初始化。我正在获取用户的当前位置,并根据用户的当前位置更改SwiftUI视图中的图像。 下面是UserLocation类: class UserLocation: ObservableObject { var userCurrentState: StateEnum = .None // StateEnum is an enum to store state areas like west, eas

我有一个类UserLocation的全局对象,它在
AppDelegate.swift
中初始化。我正在获取用户的当前位置,并根据用户的当前位置更改SwiftUI视图中的图像。 下面是
UserLocation
类:

class UserLocation: ObservableObject {
      var userCurrentState: StateEnum = .None 
// StateEnum is an enum to store state areas like west, east and its default value is .None
}
在我的
CoreLocation
方法中,经过一些计算后,我正在设置全局
userLocation
对象的
userCurrentState

 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    {

        * some calculations * 
        userLocation.userCurrentState = .West
    }
StateEnum
有一个方法
getStateImage
,它返回一个
字符串
,该字符串是我应用程序的
xcassets
中图像的名称,下面是我在SwiftUI视图中使用它的方式:

import SwiftUI
import Combine

struct ContentView: View {

    @EnvironmentObject var locationOfUser: UserLocation 
    var body: some View {
        HStack {
            Image(locationOfUser.userCurrentState.getStateImage)
                    .resizable()
                    .frame(width: 30, height: 30, alignment: .leading)
        }
    }
    .
    .
    .
    .
    .
    struct ContentView_Previews: PreviewProvider {
           static var previews: some View {
                  ContentView().environmentObject(userLocation)
           }
    }

问题是,当我启动应用程序时,“无”状态下的图像会显示出来,并且不会改变。我正在根据当前位置更改图像,一旦用户进入一个新区域,并且用户的状态发生更改,图像就会更改,但我没有获得预期的行为。但是,如果在初始化视图之前设置了2毫秒的间隔,则图像会根据当前位置不断变化。当我启动应用程序并根据None枚举获取图像时,它不会改变。我观察到的是视图初始化和获取当前位置之间的微秒差异。这可以通过
定时器解决,但我不想使用
定时器或任何其他黑客行为。

您是否用
@Published
属性包装器标记
用户当前状态
?我看不出来。为了能够在每次属性更改时获取最新值,您需要一个发布者。这就是简单的
@发布的
属性包装的目的。如果您在主线程上收到更新,它仍然不起作用。如果没有,请更新我在主线程上收到的主线程中的值。您是如何实现和初始化
CLLocationManagerDelegate
一致性对象的?