使用Swift获取Quote及其作者

时间:2015-08-02 06:39:25

标签: arrays swift random

我是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)
}

我正在考虑使用字典,但我认为它不会起作用:/

1 个答案:

答案 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]]

从本质上讲,它们从执行的角度来看非常相似,但可能更容易以这种方式存储。虽然如果您使用作者姓名作为字典来自同一作者的多个引号,您可能会遇到问题 - 在这种情况下,您可能想要翻转作者&引用。