【问题标题】:Change label every day at the same time每天同一时间更换标签
【发布时间】:2016-06-30 15:52:35
【问题描述】:

我正在编写一个基本报价应用程序,我想在其中添加“每日报价”。我有一个带有引号/作者的 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 - 但没有任何结果。

如何在每天午夜更改报价并保持一整天?

我是编程新手,非常感谢您提供详细的代码回答,我才编码几个月 - 谢谢!

【问题讨论】:

  • 记住上次打开/刷新/加载日期,当您的应用打开时确定是否应通过简单的日期算法加载新报价。然后启动计时器或安排本地通知以运行报价重新查询。
  • 为什么不试试本地通知呢?为下一个 64 天的午夜安排 64 通知,然后在收到第 64 个通知时再次更新下一个 64 日期。
  • @VibhaSingh 这是一个可能的解决方案,但完全矫枉过正。
  • 看起来与昨天提出的这个问题非常相似:stackoverflow.com/questions/38106791/…

标签: ios swift


【解决方案1】:

可能是这样的?不好意思是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];
}

【讨论】:

  • 试图将我的随机化添加到您的 //change 标签 --> 不,它不起作用。在模拟器中运行期间,标签中没有显示引用/作者 :( 感谢您的帮助,我相信我们可以解决问题。
  • 我将您的代码翻译成 swift 并将其放在我的 viewDidLoad 函数中 - 没有结果 @NikKov
  • 这是一个示例,我没有尝试过这段代码,但概念可以是这样的
  • 您能帮我找到正确的代码吗?我不知道如何让它发挥作用?感谢您的时间。 @尼克科夫
猜你喜欢
  • 2011-05-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多