如何临时删除swift数组成员?

时间:2015-12-01 23:21:13

标签: ios arrays swift swift2 swift2.1

我对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
    }
}

它没有按照我想要的方式工作,任何关于使其工作的想法或一种全新的方式(没有连续两次获得相同的字符串)?

1 个答案:

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