簡體   English   中英

如何從隨機選擇的 swift 中的兩個不同 arrays 向 label 添加文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM