【发布时间】:2016-06-11 00:51:31
【问题描述】:
所以我一直在努力学习 swift,但我遇到了一个让我卡了一段时间的问题。我正在使用序列将数据从第一个控制器传递到第二个控制器。
当我打印变量 onLoad 时,它会打印出传递的正确值,但是在我执行另一个函数(单击红色按钮)后,它不会打印出传递的值,而是打印出空白值。
var Level = 0;
var userId: String = "";
var clanId: String = "";
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print(userId); //prints 97
print(clanId); //prins 2
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func redButtonClick(sender: AnyObject) {
print(userId); //prints ""
print(clanId); //prins ""
}
正如您在代码中看到的那样,它似乎很简单,但显然我错过了它是如何工作的,因为在 onload 之后变量中不包含任何内容。
感谢大家的帮助!
------------------编辑----------------------
更改值 userId: String = "test" 更改了值 clanId: String = "test"
现在在 onload 函数中打印出来
print(userId)
print(clanId)
results:
97
2
test
test
----添加-----------
@IBAction func loginButton(sender: AnyObject) {
self.performSegueWithIdentifier("dashboard", sender: self);
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "dashboard")
{
let dutydash:dashboardController = segue.destinationViewController as! dashboardController;
dutydash.userId = self.userId;
dutydash.clanId = self.clanId;
}
}
【问题讨论】:
-
你试过不初始化userId和clanId吗? (
var userId: String! var clanId: String!) 单击按钮时它们可能会重置为原始值? -
进行这些更改后,我收到:97 2 致命错误:在展开可选值时意外发现 nil 如果我添加了 ?代替 !我得到输出 92, 2, nil, nil
-
请分享一些来自第一个控制器的代码,你何时以及如何去目的地
-
@Aamir 我已将其添加到主要问题中
-
您在该代码中设置了 userID 和 companyID,而不是 clanID