我在"引用一天"中有一个Swift数据文件。有500个引号的项目,我想在每次成为新的一天时致电updateQuote()
。
引用字符串变量更新QuoteViewcontroller
中的UILabel和UILocalNotifiication()
中alertBody的字符串。
见以下参考资料:
var quotes:[Quote] = quoteData
var quote: String!
var counter = 0
func updateQuote() {
if counter == quotes.count {
counter = 0
} else {
quote = quotes[counter].quoteTitle
counter++
}
}
我尝试使用NSDate()
执行类似的操作:
let userCalendar = NSCalendar.currentCalendar()
let dayCalendarUnit: NSCalendarUnit = [.Day]
let DayDifference = userCalendar.components(
dayCalendarUnit,
fromDate: lastDate,
toDate: nowDate,
options: [])
var difference = DayDifference.day
if difference > 0 {
updateQuote()
lastDate = nowDate
}
但是这个逻辑似乎不起作用,因为我不确定如何在初始运行时填充lastDate和nowDate。
我也不确定将上述功能放在何处,以便在应用程序在后台运行时可以继续检查。
任何见解都会很棒。
答案 0 :(得分:1)
如果您只是希望应用程序每天在UILabel中显示不同的引用,那么显而易见的解决方案是将今天的日期转换为整数,然后使用该整数索引到您的数组中。像这样的东西会这样做......
let daysSince1970 = NSDate().timeIntervalSince1970 / 60 / 60 / 24
let index = Int(daysSince1970) % quotes.count
myLabel.text = quotes[index]
上面的代码不必经常运行,只需在应用程序移动到前台时运行。
将当天的报价放在通知中...在您的UI中的某个位置,您应该询问用户他们希望报价交付的时间。一旦你有这个时间,加载几个一次性通知,每个通知都有不同的报价,并设置为在不同的日期交付(选择与上述算法相同的报价,除了每天推进一次索引。)我认为Apple允许您以这种方式加载64个通知。