【问题标题】:Why am I receiving this error message ("Instance method 'appendInterpolation(_:formatter:)' requires that 'Any' inherit from 'NSObject'")?)为什么我会收到此错误消息(“实例方法 'appendInterpolation(_:formatter:)' 要求 'Any' 继承自 'NSObject'”)?)
【发布时间】:2021-10-28 13:53:22
【问题描述】:

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

'''

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 上创建了一个数组,以便在单击按钮一定次数后为其附加一个值。但是,当我尝试在列表文本中插入该值时,我收到此错误。如何解决这个问题?

【问题讨论】:

  • 您将 gameScores 声明为 [Any] 是否有特定原因?您是否没有 GameScore 类型,甚至 Int 可能有。
  • @Warren Burton 如何制作 gameScores 类型?抱歉,我是 Swift 新手。
  • @WarrenBurton 另外,我没有将其设为 [Any] 的具体原因,我只是发现它有效并且没有给我其他错误。

标签: arrays swift swiftui interpolation


【解决方案1】:

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

您可以使用 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])) ")
                }
            }
            
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    相关资源
    最近更新 更多