在修改代码的过程中,突然发现多了一些报错。
开始时,还以为属性或方法在异步任务、闭包或者类方法中被访问时,需要显式的使用self,但实际上之前也运行正常且没有这些报错。
func judgeSource() {
print("判断用户选择的汇率数据来源")
switch UserSelectedSource { // 报错行代码
case 0:
print("调取某汇率中心的数据")
Task {
await loadForeignExchange()
calculaterReserveAmount() // 报错行代码
}
break
default:
print("judgeSource报错,退出judgeSource函数")
break
}
}
随后在尝试在静态上下文中调用self:
func judgeSource() {
print("判断用户选择的汇率数据来源")
switch self.UserSelectedSource { // 报错行代码
case 0:
print("调取某汇率中心的数据")
Task {
await loadForeignExchange()
self.calculaterReserveAmount() // 报错行代码
}
break
default:
print("judgeSource报错,退出judgeSource函数")
break
}
}
修改后,Xcode报新的错误:
Cannot find 'self' in scope; did you mean to use it in a type or extension context?
表示在静态上下文中,找不到self。
当我依次检查各项错误时,发现底部的错误为:
Extraneous '}' at top level
Remove '}'
这就说明问题出在符号上,可能是某处多余/缺少括号。
在点击系统提示的“Fix”修复按钮后,底部最外层的大括号包围消失了。
使用Command + A全选后,使用Command + I格式化,
发现Class类并没有包裹底部的方法,导致代码执行时查找不到对应的上下文。
最后的结局方案就是将Class类的右大括号移至代码底部。
问题得到解决。