我正在开发我的第一个应用程序,当按下按钮时,我完全坚持在标签中生成随机文本。这里有更多信息:
该应用程序是一个非常简单的学习工具,它将帮助我记住着名历史学家的引用(我知道我可以使用笔和纸,但这种方式更有趣,我的朋友也可以使用它)。
这就是我所拥有的:
@IBAction func quoteButtonTapped(sender: AnyObject) {
var randomNumber = arc4random_uniform(5) + 1
var QuoteString:String = String(format: "quote%i", randomNumber)
self.quoteLabel.text = QuoteString
var quote0 = "Quote 000"
var quote1 = "Quote 001"
var quote2 = "Quote 002"
var quote3 = "Quote 003"
var quote4 = "Quote 004"
var quote5 = "Quote 005"
var quote6 = "Quote 006"
}
(代码图片找到here)
正如您所看到的,随机生成器在前缀'quote'中添加一个数字,然后标签(quoteLabel)显示结果'Quotestring'(前缀和随机数放在一起)
然而,发生的事情是标签只显示文本'quote1'或'quote3'而不是我附加到那些“Quote 000”的变量
我如何让Label显示变量(“引用000”),而不仅仅是我所谓的那些(quote5) - 我做了什么重大错误,或者我错过了什么小事?
更多信息:
引用000 - 006正是我所谓的测试,并将被引号替换。
该应用在iOS模拟器中运行正常,只是反复显示'quote0'或'quote5'等。
非常感谢,任何帮助都会很棒!
答案 0 :(得分:4)
不要创建一堆单独的引号变量。创建一个引号数组:
let quotes = [
"Now is the time for all good men to come to the aid of their country",
"Vini, vidi, vichi",
"I regret that I have but one life to give for my country",
"Illegitimi non carborundum"
]
let index = arc4random_uniform(UInt32(quotes.count))
let aQuote = quotes[index]
顺便说一下,不要张贴代码图片。使用代码标记将代码放入您的帖子,就像我上面所做的那样。
答案 1 :(得分:2)
我如何让Label显示变量("引用000"),而不仅仅是我称之为(quote5) - 我做了什么重大错误,或者我错过了什么小事?
问题是这行代码var QuoteString: String = String(format: "Quote 00%d", randomNumber)
实际上是将String
值分配给QuoteString
。它没有引用您的变量quote0
.. quote6
及其相关引号。你实际上是在告诉它QuoteString
="" +随机数。
这两行我觉得你正在努力实现的目标。
let quoteArray = ["Quote 000", "Quote 001", "Quote 002", "Quote 003", "Quote 004", "Quote 005", "Quote 006"]
self.quoteLabel.text = quoteArray[Int(arc4random_uniform(UInt32(quoteArray.count)))]
答案 2 :(得分:1)
因为你只是使用字符串,所以你不需要拥有所有字符串变量的额外代码。只需使用:
NSArray *values = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];
或
var QuoteString:String = String(format:Quote 00%d,randomNumber)
你不应该使用这样的字符串来选择变量名。另一种选择是使用Switch Case,但上述代码是目前最好的选择。
答案 3 :(得分:0)
嗯,你只是创建一个字符串对象并将其放入标签中。此外,您希望引用变量,但在声明变量之前,您正在执行此操作。你的范围也不太对,你的随机数会产生1-5之间的东西,但你想要0-6。你可以输入一个7并取走+1,但我会采用不同的方式。
我个人会把它们全部放在一个数组中并按照这样做:
@IBAction func quoteButtonTapped(sender: AnyObject) {
let quotes: NSArray = ["Quote 000", "Quote 001", "Quote 002", "Quote 003", "Quote 004", "Quote 005", "Quote 006"]
let range: UInt32 = UInt32(quotes.count)
let randomNumber = Int(arc4random_uniform(range))
let QuoteString = quotes.objectAtIndex(randomNumber)
self.quoteLabel.text = QuoteString as? String
}