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

Swift 从数组取随机元素后删除报Cannot find 'randSachmeli'错如何解决

问题原因及解决方法

你代码存在4个可修复的问题,逐一调整即可正常运行:

  • 变量名拼写错误:你定义的随机元素变量名为randSachemli,调用移除方法时误写为randSachmeli,所以会报作用域内找不到对应变量的错误
  • 数组定义为常量不可修改:你把yvelaSachmeli声明为let常量,值类型的数组无法执行增删操作,需要改为var声明可变数组
  • 自定义结构体未遵守Equatable协议:Swift无法直接判断两个SachmelebiData实例是否相等,需要显式声明遵守Equatable协议才能做元素匹配
  • randomElement()返回可选值需要解包,且原生Array没有直接接收元素参数的remove方法,推荐通过索引移除执行效率更高也更安全

修正后可运行代码

// 结构体遵守Equatable协议,支持相等判断
struct SachmelebiData: Equatable {
    let name:String
    let link:String
}

var mainMenu:[SachmelebiData] = [
    SachmelebiData(name: "ხინკალი", link: ""),
    SachmelebiData(name: "მწვადი", link: ""),
    SachmelebiData(name: "yleyveri", link: "")
]
// 改为var声明可变数组
var yvelaSachmeli:[SachmelebiData] = mainMenu

// 先判断数组非空再取随机索引,避免可选值崩溃问题
if let randomIndex = yvelaSachmeli.indices.randomElement() {
    // 取出随机元素
    let randSachmeli = yvelaSachmeli[randomIndex]
    // 按索引移除对应元素
    yvelaSachmeli.remove(at: randomIndex)
    // 后续可正常使用拿到的随机元素randSachmeli
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:03