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

Swift:数组随机元素加入新数组并在List展示及错误修正

问题修复方案

错误原因分析

  1. 类型不匹配:newList是[NewWords]类型数组,但你直接往里面添加String类型的单词,append方法找不到匹配的重载,因此报错。
  2. 状态未被监听:newList是普通变量,SwiftUI无法感知它的变化,就算添加成功也不会更新List视图。

修复后的完整代码

struct NewWords: Identifiable {
    var id: UUID = UUID()
    var word: String
}

struct ContentView: View {
    let words: [String] = ["one", "two", "three", "four", "five"]
    // 使用@State包装数组,让SwiftUI监听变化
    @State private var newList: [NewWords] = []
    
    var body: some View {
        VStack {
            Spacer()
            Button("Click me") {
                makeNewList()
            }
            Spacer()
            List(newList) { item in
                Text(item.word)
            }
            Spacer()
        }
    }
    
    func makeNewList() {
        let randomNumber = Int.random(in: 0..<words.count)
        let randomWord = words[randomNumber]
        print(randomWord)
        // 创建NewWords实例再添加到数组
        newList.append(NewWords(word: randomWord))
    }
}

关键修改点

  • 将newList改为@State private var,让SwiftUI能监听数组变化并自动刷新视图。
  • 调用append时,用随机字符串初始化NewWords实例,解决类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:36:26