我是swift和编程的初学者,所以我希望得到一些帮助!一旦调用了一个值,我怎么做才能再调用它?
这是我调用随机值的函数。
func randomFact() -> String {
var unsignedArrayCount = UInt32(factsArray.count)
var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount)
var randomNumber = Int(unsignedRandomNumber)
return factsArray[randomNumber]
}
这是我的viewDidLoad.swift
class ViewController: UIViewController {
@IBOutlet weak var funFactLabel: UILabel!
let factBook = FactBook()
override func viewDidLoad() {
super.viewDidLoad()
funFactLabel.text = factBook.randomFact()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func showFunFact() {
funFactLabel.text = factBook.randomFact()
}
}
答案 0 :(得分:1)
如果要从阵列中删除它,可以使用Array.removeAtIndex(index: Int) -> Element
删除索引并同时返回。
所以只需替换:
return factsArray[randomNumber]
使用:
return factsArray.removeAtIndex(randomNumber)
答案 1 :(得分:0)
@swift执行@Arbitur提到的数组factsArray
必须声明为var
,因为removeAtIndex
是一种变异方法(一种更改self
的方法方法体) - 如果你不想使用一个可变数组,你可以将一个私有变量声明为let
和一个NSMutableSet
(或者作为Swift 1.2 a var
声明为{{ 1}})并向其添加每个随机数(Set<T>
或myMutableSet.addObject(45)
)。然后,如果集合包含元素(mySet.insert(45)
),则可以轻松检查(复杂性O(1)
表示只有1个测试的含义)。
然后你必须搜索一个随机数,直到它不是该集的一部分。最后你可以这样做(当不使用Swift 1.2时):
mySet.contains(32)