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

时间:2018-11-19 06:51:02

标签: ios swift nsuserdefaults appdelegate

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

2 个答案:

答案 0 :(得分:1)

您应该将这些方法封装在一个类中,并在AppDelegate

中使用该类的实例。
class MySession { 

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

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


}

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

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

 }

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

答案 1 :(得分:0)

首先将文件名导入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
}