我想制作一个日程应用。为此,我需要每周分开,因为时间表不同(例如:第 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 格式化您的日期所以它更容易使用。另请查看 NSDateComponents , 他们有一个 .weekNumber 属性。
然后您需要将该周数与某种存储的周数或 switch 语句进行匹配。
您的函数不一定需要接受任何参数,只需创建一个新的 NSDate。
如果您将问题更新为更具体和清晰,我也许可以提供更好的解决方案和一些代码。
关于检查“无需用户做任何事情”。
如果您想在用户不执行任何操作(例如甚至打开您的应用程序)的情况下运行该功能。您可能希望通过执行后台提取来完成此操作。大部分工作将在 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
关于swift - 每天激活一个查看周数的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562280/