[英]How can I add text to a label from two different arrays in swift chosen at Random
我創建了一個 label,屏幕上有一個顯示所選文本的框架。 我還有兩個不同的 arrays 作為名字和姓氏。
let nameArray = ["Jacob", "Lenny", "George", "Linda", "Arthur"]
let lastNameArray = ["Shelby", "Knight", "Luiz", "Hamilton", "Dobson"]
當我使用nameLabel.text = nameArray.randomElement()
它工作正常,但我希望它在同一個 label 中顯示給定 arrays 的隨機名字和隨機姓氏。 我將如何 go 這樣做?
做同樣的事情,但兩次
nameLabel.text = "\(nameArray.randomElement()!) \(lastNameArray.randomElement()!)"
您可以zip兩個數組然后使用隨機。
這是解決方案
let nameArray = ["Jacob", "Lenny", "George", "Linda", "Arthur"]
let lastNameArray = ["Shelby", "Knight", "Luiz", "Hamilton", "Dobson"]
let combine = Array(zip(nameArray, lastNameArray))
let randomName = combine.randomElement() ?? ("", "")
nameLabel.text = randomName.0 + " " + randomName.1
我推薦這種方式, randomPerson
甚至創建 (5) 個唯一的全名,並在所有名稱都用完后重新開始。
let firstNames = ["Jacob", "Lenny", "George", "Linda", "Arthur"]
let lastNames = ["Shelby", "Knight", "Luiz", "Hamilton", "Dobson"]
var tempFirstNames = [String]()
var tempLastNames = [String]()
func randomPerson() -> String {
if tempLastNames.isEmpty {
tempLastNames = lastNames
tempFirstNames = firstNames
}
let firstName = tempFirstNames.remove(at: Int.random(in: 0..<tempFirstNames.count))
let lastName = tempLastNames.remove(at: Int.random(in: 0..<tempLastNames.count))
return "\(firstName) \(lastName)"
}
並使用它
nameLabel.text = randomPerson()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.