在应用程序委托中访问全局函数时出现问题

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,祝您有美好的一天!

以上是关于在应用程序委托中访问全局函数时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

MFC:在工作线程中使用对象的成员函数时出现访问冲突错误

使用在 startup.cs 中分配的委托处理 OnTokenValidated 时出现问题

将 Kotlin 属性委托与 by 一起使用时出现 NullPointerException (NPE)

运行发布构建的应用程序时出现访问冲突异常

通过服务帐户设置 Gmail 委托时出现权限不足错误

在我的 Web 应用程序引用的类库中访问 wcf 数据服务时出现问题