如何在00:00每天重置一些NSUserDefaults 防爆。
if Time = 00:00/New day
{
NSUserDefaults.standardUserDefaults().removeObjectForKey("Data")
}
答案 0 :(得分:0)
我建议你将NSUserDefaults
包装成一个Dao:它将执行你需要检索保存数据或重置数据的逻辑。
首先让我们为NSDate
extension NSDate {
var isToday: Bool {
let unitFlags : NSCalendarUnit = [.Year, .Month, .Day]
let componentsSelf = NSCalendar.currentCalendar().components(unitFlags, fromDate: self)
let componentsNow = NSCalendar.currentCalendar().components(unitFlags, fromDate: NSDate())
return (componentsSelf.year,componentsSelf.month, componentsSelf.day) == (componentsNow.year,componentsNow.month, componentsNow.day)
}
}
class UserDefaultsDao {
static let sharedInstance = UserDefaultsDao()
private var storage: NSUserDefaults { return NSUserDefaults.standardUserDefaults() }
var data: String? {
set {
storage.setObject(newValue, forKey: "data")
storage.setObject(NSDate(), forKey: "lastSet")
}
get {
guard let lastSet = storage.objectForKey("dastSet") as? NSDate where lastSet.isToday else {
storage.removeObjectForKey("data")
return nil
}
return storage.objectForKey("data") as? String
}
}
}
这是您保存数据的方式
UserDefaultsDao.sharedInstance.data = "hello world"
这就是你打印它的方式
print(UserDefaultsDao.sharedInstance.data)
由于NSUserDefaults在Playground中无法正常工作,因此您应该在真实项目中对此进行测试。