我已经阅读了有关全局变量的其他问题,但我的情况很特殊。
首先,我在类的开头声明实例变量:
class Answers: UIViewController {
var mystring:String!
var mystring2:String!
然后我在Swift 3中通过Alamofire获取json数据:
let jsonData = result as! NSDictionary
if !(jsonData.value(forKey: "error") as! Bool) {
let user = jsonData.value(forKey: "awdata") as! NSDictionary
let question = user.value(forKey: "question") as! String
print(question) // returns string "ABC"
mystring = question
mystring2 = "test"
}
当我在函数中使用这些变量时,变量mystring1
返回null,但变量mystring2
返回"test"
:
func someFunc() {
print(mystring) // returns nothing
print(mystring2) // returns test
}
那么为什么第一个变量没有保留值,但第二个变量会记住?
答案 0 :(得分:0)
如果您想要完整答案,我认为您需要显示所有代码。 我会在实例变量前加上self,以确保在读取或更新实例变量时实际处理它。我会避免使用as!因为它很糟糕,特别是在解码数据时。