-1

我正在尝试从字典中检索并显示一组随机的图像及其相关文本,单击按钮。

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

请参阅下面的代码//这是我卡在的位置。我不知道如何从字典中检索图像及其文本。

我不确定是否可以将 myImage 和 myText var 放入字典中,并且不断重复“ myImage ”似乎有点乏味为每个集合 ”、“ myText ”似乎有点乏味。

@IBOutlet weak var myImage: UIImageView!
@IBOutlet weak var myText:  = UILabel()

var randomSet = [[myImage:"1-image", myText:"text for 1"], [myImage:"2-image", myText:"text for 2"], [myImage:"3-image", myText:"text for 3"], [myImage:"4-image", myText:"text for 4"], [myImage:"5-image", myText:"text for 5"]]

func randomiseSet (){
        let randomNumber:Int = Int(arc4random_uniform(5))
        //THIS IS THE BIT I GOT STUCK AT
        myImage.image = UIImage(named: randomSet[randomNumber])
        myText.text = randomSet[randomNumber]
        //END
    }

@IBAction func showRandomSet(_ sender: UIButton) {
        randomiseSet()
    }

我也试过而不是使用 myImage.image = .... myText.text = ....

return randomSet[[randomNumber]]

两者都不起作用并显示“构建失败”

我也使用 CoreData 进行了调查,但我是一个菜鸟,这为我打开了另一个关于图像二进制数据与由于图像大小等原因使用 URL 的蠕虫。

任何关于解决上述问题的最佳方法的建议都非常感谢。谢谢。

4

2 回答 2

0

问题是该行myImage.image = UIImage(named: randomSet[randomNumber])是错误的,因为randomSet[randomNumber]返回[String:String],而不是String。相反,您需要做的是randomSet[randomNumber]["myImage"],这将返回您要初始化的字符串UIImage

另请注意:在这种情况下,您的字典键应该是Strings 。除非myImageandmyText在其他地方声明为Strings,否则您的字典设置不正确。尝试将您的更改randomSet[["myImage":"1-image", "myText":"text for 1"], ["myImage":"2-image", "myText":"text for 2"], ["myImage":"3-image", "myText":"text for 3"], ["myImage":"4-image", "myText":"text for 4"], ["myImage":"5-image", "myText":"text for 5"]]

因此,实施更改后,您的代码应如下所示:

@IBOutlet weak var myImage: UIImageView!
//Note this change from `@IBOutlet weak var myText:  = UILabel()`, which is incorrect
@IBOutlet weak var myText: UILabel!

var randomSet: [[String:String]] = [["myImage":"1-image", "myText":"text for 1"], ["myImage":"2-image", "myText":"text for 2"], ["myImage":"3-image", "myText":"text for 3"], ["myImage":"4-image", "myText":"text for 4"], ["myImage":"5-image", "myText":"text for 5"]]

func randomiseSet (){
    let randomNumber:Int = Int(arc4random_uniform(5))
    myImage.image = UIImage(named: randomSet[randomNumber]["myImage"]!)
    myText.text = randomSet[randomNumber]
}

@IBAction func showRandomSet(_ sender: UIButton) {
    randomiseSet()
}
于 2019-10-16T21:11:59.980 回答
0

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

于 2019-10-28T14:39:18.643 回答