【发布时间】:2018-04-21 13:06:54
【问题描述】:
在 jsonserialization 方法下打印时包含数据 (1) 的变量,但在 viewdidload 中显示 nil value(0)
var bank = Int()
func getProfile() {
.
.
.
.
let json = try JSONSerialization.jsonObject(with: data) as! [String: Any]
print("json \(json)")
let status = json["Success"] as! Bool
if status {
//send profile update status 1
//After Alert Success
DispatchQueue.main.async {
if let banks = (json["bank"] as? NSString)?.intValue {
print("banks\(banks)")
self.bank = Int(banks)
print("self.bank\(self.bank)")
}
}
} else {
}
}
在 viewdidload 下调用的变量显示 0(nil) 值
override func viewDidLoad() {
getProfile()
print("bank \(bank)")
super.viewDidLoad()
// Do any additional setup after loading the view.
}
输出:银行 0
【问题讨论】:
-
你在哪里调用包含json序列化和完整代码的函数
-
viewDIdLoad 在视图加载后立即调用,如果您将自定义函数放置在 viwDidLoad 或其他位置,则执行该函数
-
在 viewdidload 中,... getProfile()
-
我已经更新了代码@MoazKhan
-
属性未设置在
viewDidLoad的原因是因为您在DispatchQueue中异步设置它。您正在另一个线程中获取和设置您的属性。如果要在设置属性时收到通知,则需要使用回调或委托。
标签: ios swift global-variables nsjsonserialization