如何将文本添加到随机选择的 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()!)"