如何临时移除swift个数组成员?

How to temporarily remove swift array members?

我对 Swift 有点陌生(很抱歉,如果我的问题有点新手)但是...

到目前为止,我的程序采用数组中的字符串并将它们显示在屏幕上 (Xcode)

我想实现一种机制,使用户无法连续两次获得相同的字符串(当 he/she 按下按钮时)。

我的想法是查看随机生成的字符串是否等于标签上已经显示的字符串(如果是),从数组中删除生成的字符串,运行 函数显示一个数组中的随机字符串,然后在显示随机事实后添加相同的字符串。

事实数组(在 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..."
]

获取 returns 事实和该事实的数组索引的函数(在 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
    }
}

它并没有完全按照我想要的方式工作,有什么让它工作的想法或一种全新的解决方法(没有连续两次获得相同的字符串)?

随机播放您的 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 }