Вот мой код в стремительном файле держать маркер в пользовательском устройстве:возврата маркера из NSUserDefaults
struct DefaultsKeys
{
static let token = ""
}
class DataContainerSingleton
{
static let sharedDataContainer = DataContainerSingleton()
var token: String?
var goToBackgroundObserver: AnyObject?
init()
{
let defaults = UserDefaults.standard
token = defaults.object(forKey: DefaultsKeys.token) as! String?
goToBackgroundObserver = NotificationCenter.default.addObserver(
forName: NSNotification.Name.UIApplicationDidEnterBackground,
object: nil,
queue: nil)
{
(note: Notification!) -> Void in
let defaults = UserDefaults.standard
defaults.set(self.token, forKey: DefaultsKeys.token)
defaults.synchronize()
}
}
}
Затем, когда я получаю маркер из запроса Alamofire я сохранить его как: DataContainerSingleton.sharedDataContainer.token = usertoken
но когда я перехожу к viewdidload и проверяю, возвращается ли он DataContainerSingleton.sharedDataContainer.token != nil
после того, как я снова запустил проект! даже когда я печатаю DataContainerSingleton.sharedDataContainer.token, он печатает нуль!
Где моя ошибка мольба
Edit: вот что я пытался, но он возвращает ноль @ Paulw11
`struct DefaultsKeys
{
static let token = "token"
}
class DataContainerSingleton
{
static let sharedDataContainer = DataContainerSingleton()
var token: String? {
didSet {
let defaults = UserDefaults.standard
defaults.set(token, forKey:DefaultsKeys.token)
defaults.synchronize()
}
}
}`
Добавить заявление для печати в вашем goToBackgroundObserver, или установить контрольную точку, и убедиться в том, что код выполняющиеся, когда ваше приложение выходит на задний план. –