每天同时更改标签

时间:2016-06-30 15:52:35

标签: ios swift

我正在编写一个基本报价应用程序,我想添加一个"每日报价"。我有一个带引号/作者的NSObject,还有一个随机化引号的函数。

        let range: UInt32 = UInt32(quotes.count) //my array is called quotes
        let randomNumber = Int(arc4random_uniform(range))
        let quote = quotes[randomNumber]
        let quoteString = quote.quote
        let authorString = quote.person

        self.quoteLabel.text = quoteString
        self.personLabel.text = authorString

如何创建一个仅每天更改报价的功能(午夜/ 00:00?)

我一直在尝试使用NSDate和NSTimer,但了解这些将在应用关闭时取消。我也一直在尝试实现此代码Update Every Day in swift syntax - 但没有任何结果。

如何在午夜每天更改报价并全天保留?

我是编程新手,非常感谢代码的详细解答,我只编写了几个月的代码 - 谢谢!

1 个答案:

答案 0 :(得分:0)

这样的事可能吗?对不起,这是objc)

- (void)checkDateAndSwitchLabel
{
    //get previous Cached data when label refreshed
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSInteger cachedDay = [defaults integerForKey:@"appDate"];
    NSInteger cachedHour = [defaults integerForKey:@"appDateHour"];

    //get current data
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitHour fromDate:[NSDate date]];
    NSInteger currentDay = [components day];
    NSInteger currentHour = [components hour];

    //compare
    if (cachedDay - currentDay >= 1 || cachedHour > currentHour) {
        //change Label
    }

    //save new values
    [defaults setInteger:currentDay forKey:@"appDateDay"];
    [defaults setInteger:currentHour forKey:@"appDateHour"];
    [defaults synchronize];
}