gpt4 book ai didi

arrays - 更改数组中的元素时更改 swift UILabel

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

我遇到了无法解决的问题:我有 2 个文件,一个包含元素数组(名称和图像),另一个文件我尝试调用数组元素来更改 UILable 中的文本。

第二个文件中数组的代码:

var items: [ItemInfo] = [("AAZ-2", "AAZ-02"), ("BACT01", "Anti-Bacterial"), ("FK01", "Fresh Keeping"), ("mouse", "Anti-Rodents"), ("RIC01", "Anti-VOC"), ("UV01", "UV Protection")]

在另一个文件中,为了访问另一个文件中的变量和数组,我创建了这个:

let demoViewController: DemoViewController = DemoViewController()

现在我创建一个函数,从中获取代码以从数组中调用文件

func newLable(){
if demoViewController.items.enumerated().first(where: {$0.element.title == "AAZ-02"}) != nil{
textLabel.text = "text1"

}else if demoViewController.items.enumerated().first(where: {$0.element.title == "Anti-Bacterial"}) != nil{
textLabel.text = "tex2"

}

但是每次当我在第一个(数组元素)和第二个元素之间切换时尝试运行应用程序时,我都会在标签中收到相同的文本(输出是:代码中的 text1)。

提前感谢大家的帮助

最佳答案

我猜你对“第一”的含义有误解。

首先并不意味着在第一个索引处找到项目,而是找到适合您搜索的第一个项目(在任何索引处)

因此,当您向数组询问满足您的谓词(例如等于“AAZ-02”)的“第一个”项目时,无论该项目的确切位置如何,它总会找到答案。因此,当您切换前两个项目时,此函数将找到该项目,尽管它位于更高的索引上。这意味着,您的“其他”- 路径将永远不会被执行。

你最好试试这个:

// Pass in your itemInfo you want to search for 
func newLabel(forItem item : ItemInfo) {

// search the first occurrence of your item
if demoViewController.items.enumerated().first(where: {$0.element.title == item.title}) != nil {

// if found -> set the itemInfo as the labelTitle
textLabel.text = item.title
}
}

关于arrays - 更改数组中的元素时更改 swift UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58320548/

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