所以我正在构建一个随机图片生成器。以及将特定文本字符串连接到标签。我想知道这是最好的方法,还是更有效的方法?
需要明确的是:这段代码是有效的。
@IBOutlet变量引用:UILabel!@IBOutlet var pictureframe: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]]!)