我在“引用一天”项目中有500个引号的Swift数据文件,并且每当它成为新的一天时,我都想致电updateQuote()
。创建一个每24小时运行一次的事件?
引用字符串变量更新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。
我也不知道在哪里把上述功能,以便它可以继续检查,而应用程序在后台运行。
任何见识都会很棒。
没有地方让你放置该功能,因此它将“保持在后台运行”。这会杀死电池寿命,所以苹果不允许它。 –
如果用户点击它,本地通知只会调用您的代码。如果他们不这样做,它会继续提供相同的文本。 OP在这里实际上有几个问题; 1.如何处理初始日期比较? (微不足道的,只是检查零),但更重要的是2.如何保持,检查在后台?这是不可能的。我看到过很多类似的问题。一些可能的解决方案是1.推送通知。 2.后台提取3.一次连续安排多个本地通知,并在应用启动时更新这些通知。 3可能是最好的,如果你有没有服务器 – Paulw11
亚历克西斯,你什么时候要显示新的报价,应用程序内的时候,用户打开或本地通知?如果是后者,那么你会想使用scheduleLocalNotification(_ notification:UILocalNotification)。 – Daniel