我想参加集中班。从一个视图控制器设置数据,并从另一个视图控制器访问数据。
这就是我所做的。但这不起作用。
首先上课:
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对象
请帮忙吗?
预先感谢
答案 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"