【问题标题】:Call specific function when date changes日期更改时调用特定函数
【发布时间】:2017-01-27 17:50:16
【问题描述】:

更具体地说,我有函数 (incomeToday) 将数字相加,然后当日期更改时,我想将当天的收入添加到除以数字的总和(自开始以来的天数 -那部分正在工作)所以我然后看到平均收入公关。日期:

func IncomeToday () -> Double {

    let IncomeInput = Double(IncomeTextField.text!)

    todayIncome = todayIncome + IncomeInput!

    return todayIncome

func TotalIncome () 

    let averageIncome = (totalIncome + IncomeToday())/ Days

    averageIncome.text = "\(averageIncome)"

所以这是我想在日期更改时(00:00)运行的函数 TotalIncome()。这可能吗?如果可以,怎么办? (我正在使用 NSDate() 进行成像,但完全不确定如何使用)。

非常感谢!!

【问题讨论】:

  • 用户会每天打开这个应用吗?如果是这样,我会在他们每次打开它时计算一下金额,看看你今天是否已经完成了。当应用程序在每晚午夜的后台运行时,完成此操作将非常棘手。不是说不可能。也只是一个友好的说明,通常你会用骆驼大小写所有的函数名,例如,IncomeToday() 应该是incomeToday(),你的类名应该是 WordWord
  • 你想做什么?你想一天调用一次函数吗?
  • 达拉斯和@Ganesh 感谢您的评论! .是的,我希望它能够在后台调用函数(计算平均收入),这样用户就不必进入应用程序进行更新(因为我以后不想实现平均显示在图标徽章图标上)
  • @NicolaiElhøjNielsen 除非应用程序处于前台模式或后台模式,否则您无法执行任何操作。当应用程序被用户终止或关闭时,您无法执行此操作。
  • @ganeshkumar 抱歉,我的意思是关闭,就像关闭后台模式一样 :)

标签: swift xcode nsdate


【解决方案1】:

这个函数每天被调用一次。仅当日期更改时才会调用它。在 appdelegate 中调用这个函数。

let defaults = NSUserDefaults.standardUserDefaults()
let date = NSDate()
let frmt = NSDateFormatter()
frmt.dateFormat = "YYYY-MM-dd"
let today = frmt.stringFromDate(date)

if let savedDate = defaults.objectForKey("today")
{
  if self.compareTwoDates(savedDate as! String, secondDate: today) == false {
    // perform calculations
    // this block gets called if the date is changed
  }
} else {
  // perform calculations
  // this block gets called for the first time only.
}
self.defaults.setValue(today, forKey: "today")
// here we save the today's date for next day's comparison

而日期比较函数是

func compareTwoDates(firstDate: String, secondDate: String) -> Bool {
  let frmt = NSDateFormatter()
  frmt.dateFormat = "YYYY-MM-dd"
  let date_first = frmt.dateFromString(firstDate)
  let date_second = frmt.dateFromString(secondDate)
  return (date_first?.isEqualToDate(date_second!))!
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多