尝试在天气应用程序中实现动态图标获取:字符串插值只能出现在字符串文字中

问题描述 投票:0回答:1

构建一个具有一些隐藏功能的基本天气应用程序。我正在尝试实现动态天气图标,但出现上述错误。我是 Swift 新手,说实话,我已经有一分钟没有完成任何编码了。

我在这一行收到错误

Image(systemName: \(icon))

struct WeatherView: View {
    
    var weather: ResponseBody
    
    var icon = ""

     mutating func dIcon(){
        if weather.weather[0].main == "Clouds" {
                icon = "clouds"
                } else {
                icon = "sun.max"
                }
        }

    var body: some View {
            
        ZStack(alignment: .leading){
            VStack{
                VStack(alignment: .leading, spacing: 5){
                    Text(weather.name)
                        .bold().font(.title)
                    
                    Text("Today, \(Date().formatted(.dateTime.month().day().hour().minute()))")
                        .fontWeight(.light)
                }
                .frame(maxWidth: .infinity, alignment: .leading)
                
                Spacer()
                
                VStack{
                    HStack{
                        VStack(spacing: 20){
                            Image(systemName: icon)
                            //Image(systemName: "cloud")
                                .font(.system(size: 40))

swift
1个回答
0
投票

SwiftUI 结构中不能有变异函数。甚至不清楚你为什么想要这样。如果我设计这个视图,我会删除

dIcon()
并使
icon
成为计算属性,类似于

var icon: String {
  if weather.weather[0].main == "Clouds" {
    “clouds”
  } else {
    “sun.max”
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.