1
Я пытаюсь кэшировать STRUCT, это мой код:Swift NSCache не STRUCT сохранены правильно
class UserManager {
static let sharedInstance : UserManager = UserManager()
fileprivate let cacheKey = "currentUser" as AnyObject
var currentUser: User? {
didSet {
self.cacheUser()
}
}
fileprivate func getUserFromCache() -> User?{
let cache = NSCache<AnyObject, AnyObject>()
// here the user is always nil
if let user = cache.object(forKey: cacheKey) as? User {
return user
}
else {
return nil
}
}
fileprivate func cacheUser() {
let cache = NSCache<AnyObject, AnyObject>()
if let user = currentUser{
cache.setObject(user as AnyObject, forKey: cacheKey)
}
//Here : print user work fine and user is not nil
print(cache.object(forKey: cacheKey) as? User)
}
init() {
currentUser = getUserFromCache()
}
}
Проблема заключается в том, что, когда функция возврата getUserFromCache()
всегда NIL даже после выполнения cacheUser
функции.
Что не так в моем коде?
Это решает часть моей проблемы, но теперь, когда я перезапускаю приложение, наличные деньги пустые, я хочу сохранить кеш в следующий раз, когда приложение запустится, он получит пользователя из кеша. – Chlebta
Сохранение и загрузка - это другой вопрос, но есть много обучающих программ в Интернете и ответы на Stack Overflow о сохранении данных в swift. Пожалуйста, пойдите на него и отправьте еще один вопрос, если у вас есть проблемы. – simonWasHere
Да, но какой самый простой способ сделать это? – Chlebta