【发布时间】:2019-02-21 13:02:39
【问题描述】:
我有以下数组:
var notebookCovers = ["cover1", "cover2", "cover3", "cover4", "cover4", "cover6", "cover7", "cover8", "cover9", "cover10"]
还有一个UIButton,当它被按下时,它会生成一个带有数组元素之一的新UIImage。
我需要做的是每次点击按钮以从数组中生成随机但唯一的元素(不重复元素),直到它们全部被选中,然后再次重新启动数组。
到目前为止,我得到了一个随机元素,但它是重复的,我不知道怎么做,所以它每次都会得到一个独特的图像
func createNewNotebook() {
let newNotebook = Notebook()
let randomInt = randomNumber()
newNotebook.coverImageString = notebookCovers[randomInt]
notebooks.insert(newNotebook, at: 0)
collectionView.reloadData()
}
func randomNumber() -> Int {
var previousNumber = arc4random_uniform(UInt32(notebookCovers.count))
var randomNumber = arc4random_uniform(UInt32(notebookCovers.count - 1))
notebookCovers.shuffle()
if randomNumber == previousNumber {
randomNumber = UInt32(notebookCovers.count - 1)
}
previousNumber = randomNumber
return Int(randomNumber)
}
【问题讨论】:
-
你不能只复制数组并删除元素直到不再剩下吗?
-
复制数组。随机播放副本。现在只需继续删除第一个元素,直到副本为空。当它为空时,重新开始。
-
@matt 我实际上实现了你的方法。这容易多了!谢谢!
-
把它作为答案。