如何访问数组内的随机指数

问题描述 投票:5回答:2

我试图用arc4random生成随机指标访问使用随机指标的数组。我很抱歉,如果我的“术语的专业用语”是不正确的,因为我是相当新的发展景象。

var backLeft = ["Clear","Drop","Smash"];    
var i = (arc4random()%(3))
var shot = backLeft[i]

这给了我一个错误在第三行,

Could not find an overload for 'subscript' that accepts the supplied arguments.

但是,如果我用,

var i = 2
var shot = backLeft[i]

然后,它并没有给我任何问题。从PHP背景的,我似乎无法有任何线索是怎么回事错在这里。

谢谢! :) PS:我在XCODE 6雨燕游乐场内尝试这种

ios arrays variables swift
2个回答
10
投票

这是由于类型安全的斯威夫特的执行。

arc4random()返回UInt32,下标运算符将Int

你需要确保i的类型是Int的传递到下标运算符之前。

您可以通过初始化从Inti这样做:

var shot = backLeft[Int(i)]

或者,你可以在分配给i然后正常访问i之前做同样的随机值:

var i = Int(arc4random()%(3))
var shot = backLeft[i]

1
投票

随着斯威夫特5,如果你想从数组中获得一个随机元素,你可以使用ArrayrandomElement()方法:

let array = ["Clear","Drop","Smash"]
let randomElement = array.randomElement()
print(String(describing: randomElement)) // Optional("Smash")

如果你想从数组中随机获得一个指标,你可以使用Arrayindices财产和RangerandomElement()方法:

let array = ["Clear","Drop","Smash"]
let randomIndex = array.indices.randomElement()
print(String(describing: randomIndex)) // Optional(1)
© www.soinside.com 2019 - 2024. All rights reserved.