Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中显示来自词典的随机图像和文本集_Ios_Swift_Swift Dictionary - Fatal编程技术网

Ios 在Swift中显示来自词典的随机图像和文本集

Ios 在Swift中显示来自词典的随机图像和文本集,ios,swift,swift-dictionary,Ios,Swift,Swift Dictionary,我试图从字典中检索并显示一组随机的图像及其相关文本,只需点击一个按钮 首先,我尝试将图像数组和文本数组分开,并使用Int(arc4random_uniform())从数组中随机选取要显示的元素。它起作用了,但在这样做的过程中,我需要确保图像及其关联的文本在它们自己的数组中处于相同的位置,我认为必须有更好的方法将它们组合到多维数组或字典中来构造数据。我最终使用了一本字典,但却被卡住了,不知道如何显示图像和文本 请参见下面的代码//这是我遇到的问题。我不知道如何从字典中检索图像及其文本 我不确定是否

我试图从字典中检索并显示一组随机的图像及其相关文本,只需点击一个按钮

首先,我尝试将图像数组和文本数组分开,并使用Int(arc4random_uniform())从数组中随机选取要显示的元素。它起作用了,但在这样做的过程中,我需要确保图像及其关联的文本在它们自己的数组中处于相同的位置,我认为必须有更好的方法将它们组合到多维数组或字典中来构造数据。我最终使用了一本字典,但却被卡住了,不知道如何显示图像和文本

请参见下面的代码//这是我遇到的问题。我不知道如何从字典中检索图像及其文本

我不确定是否可以将myImage和myText变量放在字典中,并且对每个集合重复“myImage”、“myText”似乎有点乏味

@ibvar-myImage:UIImageView!
@ibvar myText:=UILabel()
var randomSet=[[myImage:“1-image”,myText:“文本用于1”],[myImage:“2-image”,myText:“文本用于2”],[myImage:“3-image”,myText:“文本用于3”],[myImage:“4-image”,myText:“文本用于4”],[myImage:“5-image”,myText:“文本用于5”]
func随机集(){
设随机数:Int=Int(arc4random_均匀(5))
//这就是我被卡住的地方
myImage.image=UIImage(名称:randomSet[randomNumber])
myText.text=randomSet[randomNumber]
//结束
}
@iAction func showRandomSet(u发送方:ui按钮){
随机集()
}
我也尝试过使用myImage.image=。。。。myText.text=

返回随机集[[randomNumber]]
两者都不起作用,并显示“构建失败”

我也调查过使用CoreData,但我是一个noob,这为我打开了另一个关于图像的二进制数据与使用URL的蠕虫罐头,因为图像大小等


任何关于解决上述问题的最佳方法的建议都将不胜感激。谢谢。

问题在于,
myImage.image=UIImage(命名为:randomSet[randomNumber])
行是错误的,因为
randomSet[randomNumber]
返回的是
[String:String]
,而不是
String
。相反,您需要做的是
randomSet[randomNumber][“myImage”]
,它将返回要初始化
UIImage
的字符串

还要注意:在这种情况下,字典的键应该是
String
s。除非
myImage
myText
在别处声明为
String
s,否则您的词典设置不正确。尝试将您的
randomSet
更改为
[“myImage”:“1-image”、“myText”:“1”的文本、[“myImage”:“2-image”、“myText”:“2”的文本、[“myImage”:“3-image”、“myText”:“3”的文本、[“myImage”:“4-image”、“myText”:“4”的文本、[“myImage”:“5-image”、“myText”:“5”的文本]

因此,在实现更改时,您的代码应该如下所示:

@ibvar-myImage:UIImageView!
//请注意来自“@IBOutlet弱var myText:=UILabel()”的更改,这是不正确的
@ibvar myText:UILabel!
var randomSet:[[String:String]=[[“myImage”:“1-image”、“myText”:“1”的文本、[“myImage”:“2-image”、“myText”:“2”的文本、[“myImage”:“3-image”、“myText”:“3”的文本、[“myImage”:“4-image”、“myText”:“4”的文本、[“myImage”:“5-image”、“myText”:“5”的文本]]
func随机集(){
设随机数:Int=Int(arc4random_均匀(5))
myImage.image=UIImage(名称:randomSet[randomNumber][“myImage”]!)
myText.text=randomSet[randomNumber]
}
@iAction func showRandomSet(u发送方:ui按钮){
随机集()
}

刚刚意识到我可以使用.plist文件来组织字典中的属性,而不是像那样在代码中列出所有属性…

感谢您指出我设置的字典不正确。读完之后,我开始觉得我不应该使用字典,而应该使用二维数组。我尝试了你的建议,但在myImage.image=。。。和myText.text=。。。线。我尝试了myText.text=randomSet[randomNumber][“myText”],它停止了错误消息并注释掉了myImage.image=。。。在出现错误消息时,单击play来构建它,但它不起作用。所以我尝试了下面的内容(文章的下一条消息)…我会像你一样使用一系列字典。2D数组不适合存储键/值对。它们更适合表示网格之类的东西(像棋盘一样思考)。改为修改我自己的原始问题,添加我用二维数组尝试的部分。谢谢,哇!非常感谢你的帮助和时间。现在修好了。很抱歉,我已将图像插座的名称从randomImage更改为myImage,不知道即使我在代码中更改了对它的所有引用,当我右键单击图像时,它仍然显示“randomImage”作为插座名称。控制台中的一部分提到了“随机图像”(所以我把它改回去了)。。。对不起,我是新手。从提问中学到了很多。酷,完成了。我点击了几次向上箭头,但说我需要15个以上的声誉。没有注意到它下面有一个滴答声。