SwiftUI报错appendInterpolation要求Any继承自NSObject如何解决
问题根因
这个报错由两个核心问题触发:
gameScores被定义为[Any]类型,Swift字符串插值无法直接处理未明确类型的Any值,编译器无法判断该如何将其转换为可显示的字符串内容- 列表遍历的下标逻辑错误:
ForEach遍历输出每局游戏的分数时,错误使用gameTracker作为数组下标,不仅取不到对应局数的分数,还极易触发数组越界崩溃
修复步骤
- 明确数组类型
你的数组存储的是游戏分数,直接把[Any]替换为对应分数的实际类型即可,比如分数是整数就用[Int],包含小数就用[Double],不要用泛用的Any类型。 - 修正下标引用
ForEach从1开始遍历局数,而数组下标从0开始,因此要取第$0局的分数,需要用gameScores[$0 - 1]作为取值下标。 - (可选优化)建议直接绑定数组元素遍历,避免
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
相关产品推荐
相关产品推荐

