gpt4 book ai didi

ios - 将结构添加到字典中,然后随机调用这些结构

转载 作者:行者123 更新时间:2023-11-28 13:21:14 25 4
gpt4 key购买 nike

我在这里尝试做两件不同的事情,但都出现了错误。我正在尝试将结构添加到字典中,然后我编写了一个函数来随机提取其中一个字典条目。

结构如下:

struct Customer
{
var name: String
var email: String
}

和字典:

var customerDatabase: [String: String] = [Customer(name: "Lionel Messi", email: 
"lmessi@fifa.com"), Customer(name: "Cristiano Ronaldo", email: "cronaldo@fifa.com"),
Customer(name: "Wayne Rooney", email: "wrooney@fifa.com")]

这是我收到的字典错误消息:

Playground execution failed: :45:42: error: type '[String : String]' does not conform to protocol 'ArrayLiteralConvertible' var customerDatabase: [String: String] = [Customer(name: "Lionel Messi", email: "lmessi@fifa.com"), Customer(name: "Cristiano Ronaldo", email: "cronaldo@fifa.com"), Customer(name: "Wayne Rooney", email: "wrooney@fifa.com")]

最后,我的函数将从我的字典中随机提取一个 Customer 结构。

func randomCustomer() -> ()
{
var customer = arc4random_uniform(customerDatabase)
return customer
}

我的函数的错误消息。

<EXPR>:48:39: error: '[String : String]' is not convertible to 'UInt32'
var customer = arc4random_uniform(customerDatabase)
^
Darwin._:1:5: note: in initialization of parameter '_'
let _: UInt32

我觉得问这么简单的问题真是个菜鸟。非常感谢您的帮助!

最佳答案

修改后的代码如下:

var customerDatabase:[Customer] = [Customer(name: "Lionel Messi", email:
"lmessi@fifa.com"), Customer(name: "Cristiano Ronaldo", email: "cronaldo@fifa.com"),
Customer(name: "Wayne Rooney", email: "wrooney@fifa.com")]

func randomCustomer() -> Customer
{
let customer = Int(arc4random_uniform(UInt32(customerDatabase.count)))
return customerDatabase[customer]
}

for _ in 1...10 {
println(randomCustomer().name)
}

1) 你真的需要一个数组而不是字典。在这种情况下,您需要一组 Customer 对象或 [Customer]

2) randomCustomer 函数需要返回一个Customer。首先,调用 arc4random_uniform() 生成一个介于 0 和 1 之间的数字,小于您传递给它的数字。在此示例中,我们将数组中 Customer 对象的数量传递给它,即 3,但首先我们必须将其转换为 UInt32,因为这就是arc4random 想要。它生成一个随机的 0、1 或 2 并将其作为 UInt32 返回,我们将其返回为 Int 并分配给变量 customer .然后,此 customer 值用作 Customer 数组的索引,以选择函数返回的值。

3) 最后,我添加了一个循环来调用 randomCustomer() 10 次并打印出他们的名字。请注意,我使用了 _ 的循环索引而不是像 iindex 这样的变量名,因为我们不使用变量,所以我们不'给它起个名字。


这是字典版本:

var customerDatabase: [String:String] = ["Lionel Messi":
"lmessi@fifa.com", "Cristiano Ronaldo": "cronaldo@fifa.com",
"Wayne Rooney": "wrooney@fifa.com"]

func randomCustomer() -> Customer
{
let keys = customerDatabase.keys.array
let customer = Int(arc4random_uniform(UInt32(keys.count)))
let name = keys[customer]
let email = customerDatabase[name]!
return Customer(name: name, email: email)
}

1) 字典仅使用用户名作为键,使用电子邮件作为值。

2) 这一次,随机函数首先创建字典中所有键的数组。然后它选择一个随 secret 钥,并使用该 key 获取电子邮件值。字典查找总是返回一个可选 值。这里我们用 ! 解包。最后,它根据键(名称)和值(电子邮件)创建一个 Customer 对象并返回它。

关于ios - 将结构添加到字典中,然后随机调用这些结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25587861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com