Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 删除项目后如何重新填充数组_Ios_Arrays_Swift_Uialertaction - Fatal编程技术网

Ios 删除项目后如何重新填充数组

Ios 删除项目后如何重新填充数组,ios,arrays,swift,uialertaction,Ios,Arrays,Swift,Uialertaction,我有一个数组并删除项,这样在从数组中调用元素时它们就不会重复。但是,一旦调用了所有元素,我想在单击警报上的OK之后重新填充数组。我想不出怎么做。有什么想法吗 func select() { //random phrase if array.count > 0 { let Array = Int(arc4random_uniform(UInt32(array.count))) let randNum = array[Array]

我有一个数组并删除项,这样在从数组中调用元素时它们就不会重复。但是,一旦调用了所有元素,我想在单击警报上的OK之后重新填充数组。我想不出怎么做。有什么想法吗

func select() {
    //random phrase
    if array.count > 0 {
        let Array = Int(arc4random_uniform(UInt32(array.count)))
        let randNum = array[Array]
        // random phrase when program starts
        self.phrase.text = (array[Array])
        //removing
        array.remove(at: Array)
        array.
    } else {
        let  alert = UIAlertController(title: "Completed", message: "Click below to reload datac", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "ok", style: .default, handler: nil))
        present(alert, animated: true)
    }
}

一般psuedo代码为:

declare an array with items
invoke select() to choose a random item
    if array is empty 
        re-populate array after user prompt
        return
    end-if

    select random item and assign to phrase 
    remove item from array 
end select()
因此,有些东西的效果是:

var items = ["a", "b", "c"]
var phrase: String?

func selectRandomItem() {
    if items.isEmpty {
        let  alert = UIAlertController(title: "Completed", message: "Click below to reload datac", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "ok", style: .default, handler: { _ in
            // repopulate `items` array
            items = ["a", "b", "c"]
        }))
        present(alert, animated: true)
        return
    }

    let index = Int(arc4random_uniform(UInt32(items.count)))
    phrase = items[index]
    items.remove(at: index)
}

仅供参考-不要命名变量数组。这与名为Array的标准结构太混淆了。此外,变量名应该以小写字母开头。使用一个数组。洗牌。保留一个索引并访问每个新索引,直到结束。然后重新排列数组并将索引重置为0。不需要移除任何东西。不需要两个数组。@maddy谢谢,我已经查过如何做了,完全不知道。你知道有什么地方可以为我指明正确的方向吗?谢谢,伙计,真的很感激。我可以在处理程序中复制并粘贴我的数组来重新填充它。简单明了。再次感谢。自Swift 4.2以来,arc4random_制服已过时。使用items.index.random元素。