2015-12-01 17 views
0

我有點新的斯威夫特(很抱歉,如果我的問題是有點nooby),但...如何臨時刪除swift數組成員?

到目前爲止,我的計劃需要字符串數組,並將其顯示在屏幕上(的Xcode)

我想實現一種機制,這使得它使用戶不能連續獲得相同的字符串兩次(當他/她按下按鈕)。

我的想法是查看隨機生成的字符串是否與標籤上已顯示的字符串相同(如果是true),則從數組中刪除生成的字符串,運行函數以顯示數組中的隨機字符串然後在顯示隨機事實後再添加相同的字符串。事實的

陣列(在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 
    } 
} 

這完全不是那麼回事我也想順便說一下,使其成爲任何活像想法k或一種全新的方式去解決它(沒有連續兩次獲取相同的字符串)?

回答

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 }