【问题标题】:Perform Function Every Day (Swift)每天执行功能(Swift)
【发布时间】:2017-07-17 17:23:03
【问题描述】:

在我的 iOS 应用程序中,我有一些类似于今日报价的内容。我将如何每天更新“报价”。我在变量中有引号,例如

var quotes = ["The most amazing quote in the world", "This makes no sense"]

我想把它发到viewDidLoad。非常感谢您的帮助!

【问题讨论】:

标签: ios swift function


【解决方案1】:

有很多方法可以做到这一点,例如,如果我们为每个月的每一天做一个报价,例如,只要确保有 31 个报价,您就可以使用当月的日期来索引您的报价数组:

let date = Date()
let calendar = Calendar.current
let dayOfMonth = calendar.component(.day, from: date)

quoteOfDay = quotes[dayOfMonth] // Make sure you have 31 quotes

更新:如果您想要更多随机性,您可以使用hashValue 然后:

let date = Date()
let dateIndex = Int(date.timeIntervalSince1970) / (60*60*24)
let quoteOfDay = quotes[dateIndex % quotes.count]

【讨论】:

  • 必须正好是 31 还是可以更多?
  • 如果您希望它更多,那么您需要决定如何处理它,因为一个日历月最多有 31 天,所以它永远不会索引更高。如果你想索引更高,你可以考虑其他方法来“索引”,例如取自 Unix 开始时间以来的天数并以你拥有的引号数量为模,因此你可以索引它。等等。
  • Int(arc4random_uniform(UInt32(quotes.count))) 随机化怎么样?我该怎么做?
  • 您可以随机化,但这样做您不会得到“每日报价”,而是会得到“随机生成报价”……但请确定您是否喜欢随机引用那也可以。否则,如果您想要一个基于日期的索引,您可以使用Int(date.timeIntervalSince1970) % 50 作为您的索引(包含 50 个引号)
  • 正确,这就是我的意思是你会得到一个“随机生成的报价”,每次都会有所不同。因此,为了获得“每日报价”,您需要根据日期对其进行修复,例如 Int(date.timeIntervalSince1970) % 50 可以固定并每天更改,并假设总共有 50 个报价。 (更新答案以获得更多随机但固定的日期基于hashValue
猜你喜欢
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多