每天激活一个查看周数的功能
Activate a function every day to check week
我想做一个日程应用。为此,我需要每周分开,因为时间表不同(例如:第 1 周是 A 周,第 2 周是 B 周,第 3 周是 A 周)。
我需要创建一个函数来 运行 每天确定今天是哪一周。我对函数的外观有一个抽象的想法,只是我不知道将什么传递给函数,以及如何在用户不做任何事情的情况下每天 运行 这个函数。
这是我的一些想法。
func DetermineIfWeekA(n:IntMax;something )-> Bool{
for k in 0...n{
if (DayDifference == 14*k+3,14*k+4,14*k+5,14*k+6,14*k+7){
return true
}else if(DayDifference == 14*k+10,14*k+11,14*k+12,14*k+13,14*k+14){
return false
}
}
}
我没有一个完美的答案给你,但根据你所说的,我有以下想法。
关于你想要的日期函数。
创建一个 NSDate() 实例,它将为您提供当前日期,您可能必须使用 NSDateFormatter so it's easier to work with. Also look into NSDateComponents 来格式化您的日期,他们有一个 .weekNumber 属性.
然后您需要将该周数与某种存储的周数或 switch 语句进行匹配。
您的函数不一定需要采用任何参数,只需创建一个新的 NSDate。
如果您将问题更新得更具体、更清楚,我也许可以提供更好的解决方案和一些代码。
关于检查"without the user doing anything".
如果您想 运行 无需用户执行任何操作(甚至打开您的应用程序)的功能。您可能希望通过执行后台提取来完成此操作。大部分工作将在 AppDelegate 中完成。
在您的 AppDelegates didFinishLaunchingWithOptions 方法中,您需要设置 MinimumBackgroundFetchInterval。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// background fetch
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(
UIApplicationBackgroundFetchIntervalMinimum)
}
然后您需要向您的 AppDelegate 添加以下方法,其中将包含您需要执行的代码。
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
//... run task once complete call {
completionHandler(.NewData)
// }
}
Ray Wenderlich 有一个很棒的后台获取教程:
http://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial
经过一番研究,我想出了一个解决方案
let userCalendar = NSCalendar.currentCalendar()
let date = NSDate()
let unitFlags: NSCalendarUnit = [.Hour, .Day, .WeekOfYear, .Month, .Year]
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: date)
func DetermineIfWeekB ()->Bool {
if components.weekOfYear % 2 == 0 {
return true
} else {
return false
}
}
好吧,这就是我的日期函数。
我想做一个日程应用。为此,我需要每周分开,因为时间表不同(例如:第 1 周是 A 周,第 2 周是 B 周,第 3 周是 A 周)。
我需要创建一个函数来 运行 每天确定今天是哪一周。我对函数的外观有一个抽象的想法,只是我不知道将什么传递给函数,以及如何在用户不做任何事情的情况下每天 运行 这个函数。 这是我的一些想法。
func DetermineIfWeekA(n:IntMax;something )-> Bool{
for k in 0...n{
if (DayDifference == 14*k+3,14*k+4,14*k+5,14*k+6,14*k+7){
return true
}else if(DayDifference == 14*k+10,14*k+11,14*k+12,14*k+13,14*k+14){
return false
}
}
}
我没有一个完美的答案给你,但根据你所说的,我有以下想法。
关于你想要的日期函数。
创建一个 NSDate() 实例,它将为您提供当前日期,您可能必须使用 NSDateFormatter so it's easier to work with. Also look into NSDateComponents 来格式化您的日期,他们有一个 .weekNumber 属性.
然后您需要将该周数与某种存储的周数或 switch 语句进行匹配。
您的函数不一定需要采用任何参数,只需创建一个新的 NSDate。
如果您将问题更新得更具体、更清楚,我也许可以提供更好的解决方案和一些代码。
关于检查"without the user doing anything".
如果您想 运行 无需用户执行任何操作(甚至打开您的应用程序)的功能。您可能希望通过执行后台提取来完成此操作。大部分工作将在 AppDelegate 中完成。
在您的 AppDelegates didFinishLaunchingWithOptions 方法中,您需要设置 MinimumBackgroundFetchInterval。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// background fetch
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(
UIApplicationBackgroundFetchIntervalMinimum)
}
然后您需要向您的 AppDelegate 添加以下方法,其中将包含您需要执行的代码。
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
//... run task once complete call {
completionHandler(.NewData)
// }
}
Ray Wenderlich 有一个很棒的后台获取教程:
http://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial
经过一番研究,我想出了一个解决方案
let userCalendar = NSCalendar.currentCalendar()
let date = NSDate()
let unitFlags: NSCalendarUnit = [.Hour, .Day, .WeekOfYear, .Month, .Year]
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: date)
func DetermineIfWeekB ()->Bool {
if components.weekOfYear % 2 == 0 {
return true
} else {
return false
}
}
好吧,这就是我的日期函数。