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

Swift中如何将风向角度转为风向标识?代码赋值报错求助

嘿,我来帮你搞定Swift里风向角度转标识的问题~

首先得说你代码里的核心错误:degrees是Float类型的变量,你却直接给它赋值字符串(比如"N"),Swift是强类型语言,这种跨类型的赋值肯定会报错,这就是所有=处出错的原因。

下面给你一套清晰的解决方案,不仅能解决错误,还能让代码更易读复用:

第一步:写一个单独的转换函数

把角度转风向的逻辑抽成独立函数,以后哪里需要都能直接调用:

func windDirection(from degrees: Float) -> String {
    // 先处理超过360或负数的角度,比如370度转成10度,-5度转成355度
    let normalizedDegrees = degrees.truncatingRemainder(dividingBy: 360)
    // 用switch-case替代一堆if-else,逻辑更清晰
    switch normalizedDegrees {
    case 348.75...360, 0...11.25:
        return "N"
    case 11.25..<33.75:
        return "NNE"
    case 33.75..<56.25:
        return "NE"
    case 56.25..<78.75:
        return "ENE"
    case 78.75..<101.25:
        return "E"
    case 101.25..<123.75:
        return "ESE"
    case 123.75..<146.25:
        return "SE"
    case 146.25..<168.75:
        return "SSE"
    case 168.75..<191.25:
        return "S"
    case 191.25..<213.75:
        return "SSW"
    case 213.75..<236.25:
        return "SW"
    case 236.25..<258.75:
        return "WSW"
    case 258.75..<281.25:
        return "W"
    case 281.25..<303.75:
        return "WNW"
    case 303.75..<326.25:
        return "NW"
    case 326.25..<348.75:
        return "NNW"
    default:
        return "Unknown"
    }
}

第二步:修改你的JSON解析代码

不要直接修改Float类型的degrees,而是调用上面的函数得到字符串结果:

// 建议用Swift原生的[String: Any]替代NSDictionary,更符合Swift编程习惯
if let windDictionary = jsonObj?["wind"] as? [String: Any] {
    if let degrees = windDictionary["deg"] as? Float {
        // 调用转换函数得到风向标识
        let direction = windDirection(from: degrees)
        // 这里可以把direction用在你需要的地方,比如显示到UI上
        print("当前风向:\(direction)")
    }
}

几个关键说明:

  • 类型匹配:我们用新的字符串变量存储风向结果,不再给Float类型的degrees赋值字符串,彻底解决类型错误
  • 异常处理:truncatingRemainder能处理超出0-360范围的角度,避免逻辑漏洞
  • 代码可读性:switch-case比一堆if-else更整洁,后续修改风向范围也更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:05:10