【问题标题】:Cannot subscript a value of type [String] with an index of type "UInt32"无法使用“UInt32”类型的索引为 [String] 类型的值下标
【发布时间】:2016-11-04 23:52:57
【问题描述】:

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

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

但是在“let name”行中,它给了我标题上的错误。有谁知道为什么以及如何解决它?

【问题讨论】:

  • 只需使用 Int 构造函数将casual1 和casual 2 转换为Int。 Int(arc4random_uniform(7)).

标签: arrays swift random


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

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

    替换这个

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

    有了这个

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

    【讨论】:

    • 谢谢!对不起,我是新手。
    • @DarioDenizErgün:你的意思是为什么数组索引需要Int 而不是UInt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多