проблема при доступе к глобальной функции в приложении делегата - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в 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 в моем делегате приложения, чтобы проверить, вошел ли пользователь в систему или нет, поэтому не в состоянии понять, как использовать эту функцию в делегате приложения

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Сначала импортируйте имя файла в 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
}
0 голосов
/ 19 ноября 2018

Вы должны инкапсулировать эти методы внутри класса и использовать экземпляр этого класса внутри AppDelegate

class MySession { 

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

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


}

На сайте вызова создайте экземпляр MySession и используйте ваши методы, чтобы сделать то, что нужно.

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

 }

Sidenote, убедитесь, что вы используете правильные соглашения об именах Swift 4.

...