我对Swift有点新鲜(很抱歉,如果我的问题有点不高兴),但......
到目前为止,我的程序在数组中接受字符串并在屏幕上显示它们(Xcode)
我想实现一种机制,使得用户不能连续两次获得相同的字符串(当他/她按下按钮时)。
我的想法是查看随机生成的字符串是否等于标签上已显示的字符串(如果是真的),从数组中删除生成的字符串,运行该函数以显示数组中的随机字符串,然后在显示随机事实后再添加相同的字符串。
事实数组(在FactModel.swift中):
struct FactModel {
var facts = [
"Ants stretch when they wake up in the morning.",
"Ostriches can run faster than horses.",
"Olympic gold medals are actually made mostly of silver.",
"etc..."
]
获取的函数返回事实和该事实的数组索引(在FactModel.swift中):
func getRandomFact() -> (String,Int) {
let randomNumber = GKRandomSource.sharedRandom().nextIntWithUpperBound(facts.count)
let checkFact = facts[randomNumber]
return (checkFact,randomNumber)
}
到目前为止我的ViewController代码:
var mutableFactModel = FactModel()
@IBOutlet weak var FunFactButton: UIButton!
@IBOutlet weak var FunFact: UILabel!
@IBAction func ShowFunFact(sender: AnyObject) {
let localRandomFact = mutableFactModel.getRandomFact().0
if localRandomFact == FunFact.text {
mutableFactModel.facts.removeAtIndex(mutableFactModel.getRandomFact().1)
FunFact.text = mutableFactModel.getRandomFact().0
mutableFactModel.facts.append(mutableFactModel.getRandomFact().0)
} else {
FunFact.text = mutableFactModel.getRandomFact().0
}
}
它没有按照我想要的方式工作,任何关于使其工作的想法或一种全新的方式(没有连续两次获得相同的字符串)?
答案 0 :(得分:0)
随机播放facts
阵列。每次用户按下按钮时,取出第一个元素然后将其删除。对数组进行混洗类似于按随机顺序对其进行排序:
var facts = [
"Ants stretch when they wake up in the morning.",
"Ostriches can run faster than horses.",
"Olympic gold medals are actually made mostly of silver.",
"etc..."
].sort { f in arc4random_uniform(1000) % 2 == 0 }