如何将文本添加到随机选择的 swift 中两个不同数组的标签
How can I add text to a label from two different arrays in swift chosen at Random
我在屏幕上创建了一个带有框架的标签,用于显示所选文本。我还有两个不同的名字和姓氏数组。
let nameArray = ["Jacob", "Lenny", "George", "Linda", "Arthur"]
let lastNameArray = ["Shelby", "Knight", "Luiz", "Hamilton", "Dobson"]
当我使用 nameLabel.text = nameArray.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()
做同样的事情两次
nameLabel.text = "\(nameArray.randomElement()!) \(lastNameArray.randomElement()!)"
我在屏幕上创建了一个带有框架的标签,用于显示所选文本。我还有两个不同的名字和姓氏数组。
let nameArray = ["Jacob", "Lenny", "George", "Linda", "Arthur"]
let lastNameArray = ["Shelby", "Knight", "Luiz", "Hamilton", "Dobson"]
当我使用 nameLabel.text = nameArray.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()
做同样的事情两次
nameLabel.text = "\(nameArray.randomElement()!) \(lastNameArray.randomElement()!)"