每周切换存储的标志

问题描述 投票:1回答:1

我有一个值,我希望每周一次切换到另一个,或者在用户启动应用程序的后台,即使它超过一周后。当用户在一周内使用该应用程序时,每天都会转换一个值,例如variable b to false,但每周一次,我想把这个变量改回为真,因为它已被转为假。我有一个功能,我尝试放入AppDelegate's didFinishLaunchingWithOptions,但我不确定如何进行检查,因此它不起作用。这是我的尝试:

 func resetOnSunday() {

        let date = NSDate()
        let formatter  = NSDateFormatter()
        let timeFormatter = NSDateFormatter()
        formatter.dateFormat = "EEEE"
        let WeekDay = formatter.stringFromDate(date)

        timeFormatter.dateFormat = "HH:mm a"
        let time = timeFormatter.stringFromDate(date)
        if time >= "00:00 AM" && time <= "00:02 AM" && WeekDay == "Sunday" {

 var b = true

        }

    }

有谁知道怎么做?

ios swift cocoa-touch
1个回答
3
投票

首先,您可以使用NSCalendar显着减少代码(并使其更可靠)。

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
//This will return a NSDate optional which you can check against.
let nextSunday = calendar.nextDateAfterDate(date, matchingUnit: .Weekday, value: 1, options: .MatchNextTime)

if date.timeIntervalSinceDate(nextSunday!) > 0 {
  //Do your stuff here
}

注意:

工作日单位是数字1到n,其中n是一周中的天数。例如,在公历中,n为7,星期日由1表示。

接下来,我会使用NSUserDefaults作为您的价值:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(true, forKey: "yourVar")

//Then to read it
defaults.boolForKey("yourVar")
© www.soinside.com 2019 - 2024. All rights reserved.