在swift上使用随机
我是swift的初学者,我曾尝试使用random,但我有以下错误: 无法使用“UInt32”类型的参数为“[String]”类型的值下标 我不明白为什么。这是我的密码:在swift上使用随机,swift,string,random,Swift,String,Random,我是swift的初学者,我曾尝试使用random,但我有以下错误: 无法使用“UInt32”类型的参数为“[String]”类型的值下标 我不明白为什么。这是我的密码: import UIKit class ViewController: UIViewController { var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
import UIKit
class ViewController: UIViewController {
var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
var city = ["De Paris","De Monreal","Du Maroc","De Tunis","De sarcelles","De roubaix"]
@IBOutlet weak var quoteLabel: UILabel!
@IBAction func changeQuote() {
var randomIndex = arc4random_uniform(UInt32(Person.count))
var thePerson = Person[randomIndex]
print(thePerson)
var randomIndex2 = arc4random_uniform(UInt32(city.count))
var theCity = city[randomIndex2]
print(theCity)
quoteLabel.text = "le texte est modifié"
}
}
在当前上下文中,可以使用范围生成随机索引
var randomIndex = Int.random(in: 0...Person.count-1)
var randomIndexTwo = Int.random(in: 0...city.count-1)
var thePerson = Person[randomIndex]
var theCity = city.count[randomIndexTwo]
但使用数组上的方法检索随机元素可能更容易,因为如果数组为空,则该方法是类型安全的。这是一条线
var thePerson = Person.randomElement()
var theCity = city.randomElement()
在当前上下文中,可以使用范围生成随机索引
var randomIndex = Int.random(in: 0...Person.count-1)
var randomIndexTwo = Int.random(in: 0...city.count-1)
var thePerson = Person[randomIndex]
var theCity = city.count[randomIndexTwo]
但使用数组上的方法检索随机元素可能更容易,因为如果数组为空,则该方法是类型安全的。这是一条线
var thePerson = Person.randomElement()
var theCity = city.randomElement()
而不是使用导入的C函数arc4random()。 您现在可以使用Swift自己的本机随机API。 通过对任何具有所需范围的数字类型调用
random()
方法
import UIKit
class ViewController: UIViewController {
var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
var city = ["De Paris","De Monreal","Du Maroc","De Tunis","De sarcelles","De roubaix"]
@IBOutlet weak var quoteLabel: UILabel!
@IBAction func changeQuote() {
let randomIndex = Int.random(in: Person.indices)
let thePerson = Person[randomIndex]
print(thePerson)
let randomIndex2 = Int.random(in: city.indices)
let theCity = city[randomIndex2]
print(theCity)
quoteLabel.text = "le texte est modifié"
}
}
注意:变量的randomIndex、person、randomIndex2、theCity
如果从未发生突变,则应更改为常量
正如下面评论中所建议的那样,使用array.randomElement()就更好了
因此,您的changeQuote()将
而不是使用导入的C函数arc4random()。 您现在可以使用Swift自己的本机随机API。 通过对任何具有所需范围的数字类型调用
random()
方法
import UIKit
class ViewController: UIViewController {
var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
var city = ["De Paris","De Monreal","Du Maroc","De Tunis","De sarcelles","De roubaix"]
@IBOutlet weak var quoteLabel: UILabel!
@IBAction func changeQuote() {
let randomIndex = Int.random(in: Person.indices)
let thePerson = Person[randomIndex]
print(thePerson)
let randomIndex2 = Int.random(in: city.indices)
let theCity = city[randomIndex2]
print(theCity)
quoteLabel.text = "le texte est modifié"
}
}
注意:变量的randomIndex、person、randomIndex2、theCity
如果从未发生突变,则应更改为常量
正如下面评论中所建议的那样,使用array.randomElement()就更好了
因此,您的changeQuote()将
如果您只想编译代码,只需更改
var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
var randomIndex = arc4random_uniform(UInt32(Person.count))
var thePerson = Person[randomIndex]
到
但最好像其他答案所建议的那样使用
Int.random
。如果您只是想编译代码,只需更改即可
var Person = ["jean Michel" , "antoine roubet" , "samuel demets" , "zater burkov", "Gochnik samuel"]
var randomIndex = arc4random_uniform(UInt32(Person.count))
var thePerson = Person[randomIndex]
到
但是最好像其他答案所建议的那样使用
Int.random
。你的方向是正确的,但是这里有很多问题。1) 随机索引
、人员
、随机索引x2
和城市
2)不必要的可变性。不要像0..
那样编写代码。这是错误的倾向。使用array.index
。3) 你只需在数组上使用.randomElement()
,它就可以对数组和边界进行检查,Hank的@Alexander更新了答案。你的方向是正确的,但这里有很多问题。1) 随机索引
、人员
、随机索引x2
和城市
2)不必要的可变性。不要像0..
那样编写代码。这是错误的倾向。使用array.index
。3) 您只需在数组上使用.randomElement()
,它就可以对数组进行调整,并对YouTunk的@Alexander更新答案进行边界检查。不相关但重要的是:1)在Swift中,值应具有小写
名称<代码>大写名称仅为类型保留。2) 通过使数组的名称具有复数形式,可以更清楚地表示数组<代码>人而不是人
,城市
而不是城市
。另外,您不必添加任意单词,如the
来区分let city=cities.randomElement()
。简单!不相关但重要的:1)Swift中的值应具有lowerCamelCase
名称<代码>大写名称仅为类型保留。2) 通过使数组的名称具有复数形式,可以更清楚地表示数组<代码>人而不是人
,城市
而不是城市
。另外,您不必添加任意单词,如the
来区分let city=cities.randomElement()
。简单!永远不要对像'0..这样的代码进行正确的操作,更不要说
0…Person.count-1`当Person
数组为空时,它会崩溃,并且通常容易出错。使用Array.index
以无错误的方式获取索引范围。更好的是,只需调用.randomIndex()
。永远不要对像'0..这样的代码进行修改,更不用说
0…Person.count-1`当Person
数组为空时,它会崩溃,并且通常容易出错。使用Array.index
以无错误的方式获取索引范围。更好的是,只需调用.randomIndex()
。