首页 > 解决方案 > 为什么我会收到此错误消息(“实例方法 'appendInterpolation(_:formatter:)' 要求 'Any' 继承自 'NSObject'”)?)

问题描述

我正在尝试在我的应用程序中创建一个列表作为排行榜。当点击另一个主视图上的按钮时,它应该添加一个新值。但是,我不断收到此错误,我不知道为什么。这是列表视图的代码:

'''

struct scoreView: View {
    @Binding var scoreTracker: Int
    @Binding var gameTracker: Int
    @Binding var gameScores: [Any]
    @State var counter = 0
    var body: some View {
        Text("Scores: ")
        
    VStack {
        List {
            ForEach(1..<gameTracker) {
                Text("Game \($0): \(gameScores[gameTracker]) ")
                }
            }
            
        }
    }
}

''' 我在我的 contentView 上创建了一个数组,以便在单击按钮一定次数后为其附加一个值。但是,当我尝试在列表文本中插入该值时,我收到此错误。这怎么可能解决?

标签: arraysswiftswiftuiinterpolation

解决方案


这是一种类型的安全警告。字符串插值需要一个字符串可转换对象。任何快速的对象都可以表示为字符串,但如果没有显式实现,它将是有关类或结构名称、地址等的信息。这很可能不是您想在字符串上看到的,这就是为什么会出现此错误的原因。

您可以使用以下方法使其静音String(describing:

struct scoreView: View {
    @Binding var scoreTracker: Int
    @Binding var gameTracker: Int
    @Binding var gameScores: [Any]
    @State var counter = 0
    var body: some View {
        Text("Scores: ")
        
    VStack {
        List {
            ForEach(1..<gameTracker) {
                Text("Game \($0): \(String(describing: gameScores[gameTracker])) ")
                }
            }
            
        }
    }
}

推荐阅读