如何访问数组中的随机索引

use*_*988 5 arrays variables ios swift

我试图通过使用随机索引arc4random来生成随机索引来访问数组.如果我的"术语的技术用法"不正确,我很抱歉,因为我对开发场景很新.

var backLeft = ["Clear","Drop","Smash"];    
var i = (arc4random()%(3))
var shot = backLeft[i]
Run Code Online (Sandbox Code Playgroud)

这给了我第三行的错误,

Could not find an overload for 'subscript' that accepts the supplied arguments.
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用,

var i = 2
var shot = backLeft[i]
Run Code Online (Sandbox Code Playgroud)

然后它没有给我任何问题.来自php背景,我似乎无法弄清楚这里出了什么问题.

谢谢!:) PS:我在Swift Playground里面的XCODE 6上尝试这个

Cez*_*zar 10

这是由于Swift强制执行类型安全.

arc4random()返回一个UInt32,下标运算符取一个Int.

在将其传递给下标运算符之前,您需要确保i是类型Int.

您可以通过初始化Intfrom 来执行此操作i:

var shot = backLeft[Int(i)]
Run Code Online (Sandbox Code Playgroud)

或者,您可以在将其分配给i然后i正常访问之前对随机值执行相同操作:

var i = Int(arc4random()%(3))
var shot = backLeft[i]
Run Code Online (Sandbox Code Playgroud)