在初始化之前由闭包捕获的变量(结果)
我试图使用for循环和Google Places API来查找如下所示的Place ID的数组。代码大部分没有错误,但是,我的关闭或上述错误都有问题。我不确定这是什么时候 - 任何援助将不胜感激!在初始化之前由闭包捕获的变量(结果)
let mexican = ["ChIJM8S9ACvoIogRmzYiLgzlP_g",
"ChIJwSHwoNTpIogRyElYj-kHC14",
"ChIJDWRMYifoIogR7S6U4tryodY",
"ChIJqSVd6yfoIogRmTgBSoO4Z0k",
"ChIJLacWlinoIogRVGYk-bZbGUE",
"ChIJSUC9S2zCIogRTKyiW0q_6tI"]
override func viewDidLoad() {
super.viewDidLoad()
placesClient = GMSPlacesClient.shared()
var place: [String]
var results: Array<Any>
switch index.row
{
case 0 :
place = international
case 1 :
place = american
default :
place = mexican
}
for id in place
{
placesClient.lookUpPlaceID(id, callback: { (result, error) -> Void in
if let error = error {
print("lookup place id query error: \(error.localizedDescription)")
return
}
guard let result = result
else
{
print("No place details for \(id)")
return
}
results.append(result)
})
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
错误是因为你没有初始化的结果阵列, 简单的解决方案可能是这个
声明你的结果阵列这样
var results = [Any]()
我认为你应该这样做:
你应该声明结果为这样的实例变量viewDidLoad
方法
var results = [Any]()
然后如下,因为我认为你需要这个结果在您的代码的其他部分
self.results.append(result)
再次感谢您的覆盖面,Stud。我不得不研究初始化概念。无论如何,当LookUpID函数错误消失时,当我尝试输入“self.results.append(result)”时,我收到类型的值FoodTwo在同一行上没有成员结果。 – jonpeter
@jonpeter您是否在viewDidLoad方法之外声明了结果?因为这个错误是说你所在的课程(我认为是FoodTwo)没有结果array – 3stud1ant3
为什么我无法在viewDidLoad中声明它?全局变量是否都声明了这个函数? – jonpeter
您需要初始化的结果,此语句VAR的结果=使用内关闭该变量[任意]()而不是var结果:Array,并查看其行为 –
3stud1ant3