在应用程序委托中访问全局函数时出现问题
Posted
技术标签:
【中文标题】在应用程序委托中访问全局函数时出现问题【英文标题】:issue while accessing global func in app delegate 【发布时间】:2018-11-19 06:51:01 【问题描述】:我是 swift 新手,我创建了一个名为 mySession
的 swift 文件,在该文件中我存储了如下所示的登录数据
存储登录数据
func setLoginData (data:Data)
let preferences = UserDefaults.standard
let Key_Login = "Login"
preferences.set(data, forKey: Key_Login)
preferences.synchronize()
第二个函数用于使用存储的数据
获取数据
func getLoginData ()->Data
let preferences = UserDefaults.standard
let Key_Login = "Login"
if preferences.object(forKey: Key_Login) == nil
return data
else
return preferences.data(forKey: Key_Login)!
所以现在我的问题是我想在我的应用委托中使用 getLoginData 函数来检查用户是否已登录,因此无法理解如何在应用委托中使用该函数
【问题讨论】:
您面临什么问题?您是否尝试调用该函数并得到一些错误? 导入该类,创建该类的实例并调用该函数。 您的示例中的数据是什么? 我做一件事我创建一个 var 并将我的类分配给我的应用程序委托中的 var mySessionClass = SomeClass() 之类的变量,但我仍然没有得到我的函数,我是新来的所以不知道到底是什么问题所以请帮助我 @AbuUlHassan io 不要在错误写入的任何地方使用数据 【参考方案1】:您应该将这些方法封装在一个类中,并在 AppDelegate
中使用该类的实例
class MySession
func setLogin(_ data: Data)...
func getLoginData() -> Data ...
在调用站点,实例化MySession
并使用您的方法来做需要做的事情。
class AppDelegate
//...
let sessionHandler = MySession()
sessionHandler.getLoginData()
旁注,确保您使用正确的 Swift 4 命名约定。
【讨论】:
【参考方案2】:首先导入AppDelegate
中的文件名
Import mySession
然后只需调用所需函数中的方法即可。
setLoginData(data:<your Data>)
例如。如果你想在didFinishLaunchingWithOptions
方法中使用它,请按照这个
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
DefaultNetworkManager.appsConfigSetup()
window = UIWindow(frame: UIScreen.main.bounds)
setupApplication()
setLoginData(data: <Your Data>)
return true
【讨论】:
欢迎@Vishal,祝您有美好的一天!以上是关于在应用程序委托中访问全局函数时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
使用在 startup.cs 中分配的委托处理 OnTokenValidated 时出现问题