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

SwiftUI报错appendInterpolation要求Any继承自NSObject如何解决

问题根因

这个报错由两个核心问题触发:

  • gameScores被定义为[Any]类型,Swift字符串插值无法直接处理未明确类型的Any值,编译器无法判断该如何将其转换为可显示的字符串内容
  • 列表遍历的下标逻辑错误:ForEach遍历输出每局游戏的分数时,错误使用gameTracker作为数组下标,不仅取不到对应局数的分数,还极易触发数组越界崩溃

修复步骤

  1. 明确数组类型
    你的数组存储的是游戏分数,直接把[Any]替换为对应分数的实际类型即可,比如分数是整数就用[Int],包含小数就用[Double],不要用泛用的Any类型。
  2. 修正下标引用
    ForEach从1开始遍历局数,而数组下标从0开始,因此要取第$0局的分数,需要用gameScores[$0 - 1]作为取值下标。
  3. (可选优化)建议直接绑定数组元素遍历,避免gameTracker和数组长度不一致导致的越界问题。

修复后完整代码

struct ScoreView: View {
    @Binding var scoreTracker: Int
    @Binding var gameTracker: Int
    // 把Int替换为你的实际分数类型即可
    @Binding var gameScores: [Int]
    @State var counter = 0
    var body: some View {
        Text("Scores: ")
        
        VStack {
            List {
                ForEach(1..<gameTracker) { num in
                    Text("Game \(num): \(gameScores[num - 1]) ")
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:45:02