不能使用索引类型" UInt32"下标类型[String]的值。

时间:2016-07-02 21:16:00

标签: arrays swift random

我一直在尝试创建代码来生成随机名称。这是

import UIKit

 let arrayOfNames: [String] = ["Giovanni", "Simone", "Francesco", "Ahmet",       "Valerio", "Federico"]

 let arrayOfsNames: [String] = [" İl Genio", " Lo scemo", " Verga", " Fermi", " Medici", " L'assasino"]

 var casual1 = arc4random_uniform(7)
 var casual2 = arc4random_uniform(7)

 let name = "\(arrayOfNames[casual1]) + \(arrayOfsNames[casual2])"

  name
然而,在"让名字"它给了我标题上的错误。有谁知道为什么以及如何解决它?

2 个答案:

答案 0 :(得分:8)

您应该使用Int按索引访问数组

替换此

var casual1 = arc4random_uniform(7)
var casual2 = arc4random_uniform(7)

用这个

var casual1 = Int(arc4random_uniform(7))
var casual2 = Int(arc4random_uniform(7))

答案 1 :(得分:0)

实现了Swift 4.2 SE-0202: Random Unification,因此无需使用导入的C函数arc4random()。您现在可以使用Swift自己的本地随机API。 通过对具有所需范围的任何数字类型调用random()方法

因此

 var casual1 = arc4random_uniform(7)
 var casual2 = arc4random_uniform(7)

应写为。

var casual1 = Int.random(in: arrayOfNames.indices)
var casual2 = Int.random(in: arrayOfsNames.indices)