Swift AppDelegate 在 ViewController 之间传递数据
Swift AppDelegate to Pass Data between ViewControllers
我想要像集中式一样class。从一个视图控制器设置数据并从另一个视图控制器访问数据。
这是我所做的。但它不起作用。
首先是class:
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)
它总是returns nil object
有什么帮助吗?
提前致谢
问题是你没有给用户赋值,所以替换
var user: User?
有
var user = User()
顺便说一句,你的方式适合像
这样的单身人士
class Service {
static let shared = Service()
var user = User()
}
随时随地访问
Service.shared.user.userName = "----"
也可以
var user: User?
但是你应该知道它在你的应用程序流中的什么位置nil/not(首先分配初始化它),例如从异步方法分配一个值,然后其他后续访问将有一个值,当注销设置它再次为零....等等
将以下行放入 didFinishLaunchingWithOptions
方法中。
user = User()
user?.userName = "abcd"
我想要像集中式一样class。从一个视图控制器设置数据并从另一个视图控制器访问数据。
这是我所做的。但它不起作用。
首先是class:
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)
它总是returns nil object
有什么帮助吗?
提前致谢
问题是你没有给用户赋值,所以替换
var user: User?
有
var user = User()
顺便说一句,你的方式适合像
这样的单身人士class Service {
static let shared = Service()
var user = User()
}
随时随地访问
Service.shared.user.userName = "----"
也可以
var user: User?
但是你应该知道它在你的应用程序流中的什么位置nil/not(首先分配初始化它),例如从异步方法分配一个值,然后其他后续访问将有一个值,当注销设置它再次为零....等等
将以下行放入 didFinishLaunchingWithOptions
方法中。
user = User()
user?.userName = "abcd"