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

游戏中保存金币时出现Expected declaration错误,求解决

问题排查:Expected declaration 错误

错误核心原因

出现该错误的主要问题有两个:

  1. 代码位置不符合Swift语法:Swift不允许将if判断、方法调用这类可执行代码直接放在类/结构体的顶层作用域中,必须把代码包裹在函数、初始化方法、闭包等可执行上下文内。
  2. UserDefaults调用方式错误:setInteger是实例方法,不能直接通过类名调用,必须使用UserDefaults.standard这个单例实例来调用。

修正后的代码示例

把代码放到合适的函数中(比如游戏结算、按钮点击事件的处理方法里):

func savePlayerCoins() {
    let coins = 50 // 替换为你实际的金币变量
    if coins > 0 {
        UserDefaults.standard.setInteger(coins, forKey: "coinScore")
        // 可选:特殊场景下手动同步到磁盘(默认系统会自动同步)
        UserDefaults.standard.synchronize()
    }
}

如果使用较新版本的Swift,也可以用更简洁的写法:

func savePlayerCoins() {
    let coins = 50
    if coins > 0 {
        UserDefaults.standard.set(coins, forKey: "coinScore")
    }
}

关键注意事项

  • 确保代码放在函数或其他可执行代码块内部,不能直接暴露在类/结构体的顶层
  • 始终通过UserDefaults.standard访问用户默认存储的单例实例,避免直接用类名调用实例方法

内容的提问来源于stack exchange,提问作者Hassan Chughtai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:59:54