【问题标题】:Swift AppDelegate to Pass Data between ViewControllersSwift AppDelegate 在 ViewController 之间传递数据
【发布时间】:2019-12-05 01:52:51
【问题描述】:

我想有像集中的类。从一个视图控制器设置数据并从另一个视图控制器访问数据。

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

第一节课:

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 对象

有什么帮助吗?

提前致谢

【问题讨论】:

  • 你永远不会给user赋值。

标签: ios swift appdelegate


【解决方案1】:

问题是你没有给用户赋值,所以替换

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 ....等等

【讨论】:

    【解决方案2】:

    将以下行放入didFinishLaunchingWithOptions 方法中。

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

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多