游戏中保存金币时出现Expected declaration错误,求解决
问题排查:Expected declaration 错误
错误核心原因
出现该错误的主要问题有两个:
- 代码位置不符合Swift语法:Swift不允许将
if判断、方法调用这类可执行代码直接放在类/结构体的顶层作用域中,必须把代码包裹在函数、初始化方法、闭包等可执行上下文内。 - 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
相关产品推荐
相关产品推荐

