Swift:如何在00:00每天重置一些NSUserDefaults

时间:2016-05-11 12:25:52

标签: ios iphone swift

如何在00:00每天重置一些NSUserDefaults 防爆。

if Time = 00:00/New day 
{
    NSUserDefaults.standardUserDefaults().removeObjectForKey("Data")
}

1 个答案:

答案 0 :(得分:0)

我建议你将NSUserDefaults包装成一个Dao:它将执行你需要检索保存数据或重置数据的逻辑。

1:将今天添加到NSDate

首先让我们为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)
    }
}

2:NSUserDefaults的Dao

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
        }
    }
}

3:用法

这是您保存数据的方式

UserDefaultsDao.sharedInstance.data = "hello world"

这就是你打印它的方式

print(UserDefaultsDao.sharedInstance.data)
  

由于NSUserDefaults在Playground中无法正常工作,因此您应该在真实项目中对此进行测试。