swift - 将字符串连接到图像视图
问题描述
所以我正在构建一个随机图片生成器。并将特定的文本字符串连接到标签。我想知道这是否是最好的方法,还是更有效的方法?
只是要清楚:这段代码有效。
@IBOutlet var 引用:UILabel!@IBOutlet var 图片框:UIImageView!
var quotes = ["91": "Jepp,Jepp,JEPP!", "97": "nakenTORSDAG", "29P": "Løk"]
var picture = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
picture = [ #imageLiteral(resourceName: "29p"), #imageLiteral(resourceName: "91"), #imageLiteral(resourceName: "97"), #imageLiteral(resourceName: "y"), #imageLiteral(resourceName: "IMG_3105")]
}
@IBAction func button(_ sender: UIButton) {
pictureframe.image = bilder.randomElement()
switch pictureframe.image {
case UIImage(named: "91"):
quote.text = quotes ["91"]
case UIImage(named: "97"):
quote.text = quotes ["97"]
case UIImage(named: "29p"):
quote.text = quotes ["29P"]
default:
quote.text = "HØR-HØR"
}
}
}
解决方案
您可以比这更好地使用随机函数:
func randRange (lower: Int , upper: Int) -> Int {
return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
}
然后你可以把它作为字典的索引:
var quotes = ["91": "Jepp,Jepp,JEPP!", "97": "nakenTORSDAG", "29P": "Løk","50P": "any","60F": "hi"]
let array = Array (quotes.keys)
func randRange (lower: Int , upper: Int) -> Int {
return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
}
let number = randRange(lower: 0, upper: array.count - 1)
print(quotes[array[number]]!)
推荐阅读
- eclipse - 如何使用 Eclipse Papyrus 在活动图中指定 OCL 约束?
- wordpress - 我是否使用 Google SPF 正确设置了服务器电子邮件?
- php - 计算数组中的项目
- c++ - Windows 任务管理器显示进程虚拟内存的哪一部分
- java - Android studio:如何在意图中传递自定义对象
- php - Unexpected result using OR operator in regular expression
- android - Android Studio 未检测到本地模块的更改
- c# - 为什么导航发生时连接插件网络处理程序不起作用
- python-3.x - Python中的多进程在逐行读取文件时比单进程慢4000倍,这是怎么回事?
- javascript - 如何在另一个插件调用的设置中存储插件方法调用而不在 jQuery 中执行它?