我有一个返回 NSDictionary 的回调函数:
override func viewDidLoad()
{
super.viewDidLoad()
var nd: NSDictionary = [:]
parseJSON(callback: {dict in
nd = dict
//print(nd) This one prints the filled dictionary correctly
})
//print(nd) This one prints an empty dictionary
}
我想将从回调函数返回的值存储在“nd”中,但回调外部的打印语句仍然打印一个空的 NSDictionary。
我在这里做错了什么,我该如何解决它?
编辑:
var nd: NSDictionary! = nil
override func viewDidLoad()
{
super.viewDidLoad()
loadData()
print(self.nd)
}
func loadData()
{
parseJSON(callback: {dict in
self.nd = dict
print(self.nd)
})
}
我把它改成这样,这样函数就完成了加载,然后打印。然而,viewDidLoad()中的打印语句在loadData()中的打印语句之前打印,而viewDidLoad()中的打印语句仍然打印nil。为什么会发生这种情况,我需要具体更改什么?
最佳答案
看起来 parseJSON
在后台运行,并且可能仅在 viewDidLoad
方法结束后完成。因此,nd
在调用后将立即保持为空。
我的建议:在上述回调内部添加字典处理逻辑(然后将结果复制到viewDidLoad
方法外部的变量中) .
关于ios - 从回调函数获取值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43403712/