我有一个返回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”中,但回调外的print语句仍然打印一个空的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()中的print语句在loadData()中的print语句之前打印,viewDidLoad()中的print语句仍然打印nil。为什么会发生这种情况,我需要具体改变什么?
答案 0 :(得分:0)
看起来parseJSON
在后台运行,并且只有在 viewDidLoad
方法结束后才能完成。因此,nd
将在通话后立即保持为空。
我的建议:在上述回调中添加词典处理逻辑 (然后将结果复制到 之外的变量你的viewDidLoad
方法)。