Swift AppDelegate在ViewController之间传递数据

时间:2019-07-26 17:40:43

标签: ios swift appdelegate

我想参加集中班。从一个视图控制器设置数据,并从另一个视图控制器访问数据。

这就是我所做的。但这不起作用。

首先上课:

class User {
  var userName: String? = ""
}

AppDelegate

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var user: User?
.....

最后是viewController

let delegate = UIApplication.shared.delegate as! AppDelegate
 delegate.user?.userName = "abcd"
 print(delegate.user?.userName)

它总是返回nil对象

请帮忙吗?

预先感谢

2 个答案:

答案 0 :(得分:2)

问题是您没有为用户分配值,所以替换

var user: User?

使用

var user = User()

顺便说一句,您的方式适合像这样的单身人士

class Service {
  static let shared = Service()
  var user = User()
}

随时随地访问

Service.shared.user.userName = "----"

也可能是

var user: User?

,但是您应该知道应用程序流中的位置为nil / not(首先分配init),例如从异步方法为其分配值,然后其他注销访问将具有一个值,当注销再次将其设置为nil时.... etc

答案 1 :(得分:1)

didFinishLaunchingWithOptions方法中放入以下几行。

 user = User()
 user?.userName = "abcd"