【问题标题】:How to temporarily remove swift array members?如何临时删除 swift 数组成员?
【发布时间】:2015-12-01 23:21:13
【问题描述】:

我对 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..."
]

gets 函数返回一个事实和该事实的数组索引(在 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
    }
}

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

【问题讨论】:

    标签: ios arrays swift swift2 swift2.1


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多