首页 > 解决方案 > 在应用程序委托中访问全局函数时出现问题

问题描述

我是 swift 新手,我创建了一个带有名称的 swift 文件,mySession在该文件中我存储了如下所示的登录数据

存储登录数据

 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 func 来检查用户是否已登录,因此无法理解如何在应用程序委托中使用该 func

标签: iosswiftnsuserdefaultsappdelegate

解决方案


您应该将这些方法封装在一个类中,并在其中使用该类的实例AppDelegate

class MySession { 

 func setLogin(_ data: Data){...}

 func getLoginData() -> Data {...}


}

在调用站点,实例化MySession并使用您的方法来执行所需的操作。

class AppDelegate { 
//...
let sessionHandler = MySession()
sessionHandler.getLoginData()

 }

旁注,确保您使用正确的 Swift 4 命名约定。


推荐阅读