变量有什么问题?

时间:2018-01-30 11:40:37

标签: swift swift3 alamofire

我已经阅读了有关全局变量的其他问题,但我的情况很特殊。

首先,我在类的开头声明实例变量:

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
}

那么为什么第一个变量没有保留值,但第二个变量会记住?

1 个答案:

答案 0 :(得分:0)

如果您想要完整答案,我认为您需要显示所有代码。 我会在实例变量前加上self,以确保在读取或更新实例变量时实际处理它。我会避免使用as!因为它很糟糕,特别是在解码数据时。