我是Swift的新手,我正在尝试制作一个引用的应用程序,但我想在一个单独的UILabel中显示Quote和它自己的作者。但我不知道如何做到这一点,因为我有一个randomQuote函数,它为我的数组返回一个随机索引,但是数组只显示引号,我想得到一个随机引用并得到引用的作者。
这是我到目前为止所做的:
var quotes = ["'Stay Hungry, Stay Foolish.'", "'Life is what happens while you are busy making other plans.'", ""]
var authors = ["Steve Jobs", "John Lennon"]
func getRandomQuote() -> String{
//get random index
var arrayCount = UInt32(quotes.count)
var randomNumber = arc4random_uniform(arrayCount)
var finalNumber = Int(randomNumber)
return quotes[finalNumber]
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var randomImage: String = imageChange[randomNumber]
self.motivationText.text = getRandomQuote()
self.imageInspire.image = UIImage(named: randomImage)
}
我正在考虑使用字典,但我认为它不会起作用:/
答案 0 :(得分:1)
如果您的作者和引号始终采用相同的顺序,则可以对引号和引号使用相同的finalNumber。作者数组。
您可以在getRandomQuote中设置两个标签并删除String返回,然后您可以从viewDidLoad中调用它。
字典可以使用,您可以将其作为一个数组用于随机原因,然后只需使用键/值对来填充标签。
如果引用&作者总是按照相同的顺序:
func getRandomQuote() {
//get random index
var arrayCount = UInt32(quotes.count)
var randomNumber = arc4random_uniform(arrayCount)
var finalNumber = Int(randomNumber)
self.motivationText.text = quotes[finalNumber]
self.authorName.text = authors[finalNumber] // Just an assumption on label name
}
override func viewDidLoad() {
super.viewDidLoad()
getRandomQuote()
}
字典示例:
let quotesWithAuthors = ["Steve Jobs":"Stay Hungry, Stay Foolish","Alan Kay":"Simple things should be simple, complex things should be possible","Bill Gates":"I'm not fake Steve Jobs"]
let authorsArray = quotesWithAuthors.keys.array
let randomQuoteKeyIndex = Int(arc4random_uniform(UInt32(authorsArray.count - 1)))
self.authorName.text = authorsArray[randomQuoteKeyIndex]
self.otivationText.text = quotesWithAuthors[authorsArray[randomQuoteKeyIndex]]
从本质上讲,它们从执行的角度来看非常相似,但可能更容易以这种方式存储。虽然如果您使用作者姓名作为字典来自同一作者的多个引号,您可能会遇到问题 - 在这种情况下,您可能想要翻转作者&引用。