我想创建一个链接,但是在按下它时会随机选择列表中的链接。我已经将代码设置为按钮链接,但是如何修改它以便我在不同时间点击时随机选择添加更多网址。
当前链接代码:
@IBAction func Website(_ sender: Any) {
if let url = NSURL(string: "http:heeeeeeeey.com/"){
UIApplication.shared.openURL(url as URL)
}
}
答案 0 :(得分:1)
尝试类似:
@IBAction func Website(_ sender: Any) {
let websites = ["http://website1.com",
"http://website2.com",
"http://website3.com"]
if let url = URL(string: websites[Int(arc4random_uniform(UInt32(websites.count)))]) {
UIApplication.shared.openURL(url as URL)
}
}
这应该适合你。
说明:
websites
是一个String
的数组,因此请将按钮从中选择的所有网址都放在那里。Int(arc4random_uniform(UInt32(websites.count)))
是在0
和websites.count
之间选择一个随机数的神奇部分(这是数组中的最后一项。如果您是Swift(或编程)的新手,这可能让您感到困惑,不要惊慌失措,只是继续练习。
祝你好运!
答案 1 :(得分:1)
首先,创建一个URL字符串数组非常简单:
var urls = [
"http://www.url1.com",
"http://www.url2.com",
"http://www.url3.com"
]
现在,可以使用这一长行代码获取此urls数组的随机元素:
let randomURL = urls[Int(arc4random_uniform(UInt32(urls.count)))]
但是,另一种方法是添加适用于所有阵列的Array
扩展名:
extension Array {
public var random: Element? {
let index = Int(arc4random_uniform(UInt32(self.count)))
return self.count>0 ? self[index] : nil
}
}
现在,获取urls数组的随机元素非常简单:
urls.random
这会返回Optional
(这是因为如果数组中没有元素,则random属性将返回nil
)。因此,在您的代码中,您还需要打开random
属性的结果:
@IBAction func Website(_ sender: Any) {
if let urlString = urls.random,
let url = URL(string: urlString) {
UIApplication.shared.openURL(url as URL)
}
}
P.S。关于您的代码的几点评论:
Website
重命名为openRandomWebsite
(记住也要更改故事板连接)。方法应解释它们的作用,并以小写字母开头。如果您有兴趣,可以使用Swift通用代码约定here。您的代码如下:
UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
//URL opened
})