2017-04-08 1 views
0

링크를 만들고 싶지만 눌렀을 때 목록에서 임의로 링크를 선택합니다. 버튼에 링크를 이미 가져 오는 코드가 있지만 어떻게 수정하여 다른 URL을 클릭하면 다른 시간에 무작위로 선택 할지를 변경하는 방법은 무엇입니까?여러 웹 사이트에 연결

현재 링크 코드 :

@IBAction func Website(_ sender: Any) { 

     if let url = NSURL(string: "http:heeeeeeeey.com/"){ 
      UIApplication.shared.openURL(url as URL) 
     } 
    } 
+1

? 그냥'URL'을 사용하십시오. – rmaddy

+1

1) 모든 URL을 사용하여 배열을 만듭니다. 2) http://stackoverflow.com/questions/24003191/pick-a-random-element-from-an-array를 읽으십시오. –

+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) 
    } 
} 

이것은 트릭을 할해야합니다.

설명 :

  • websitesString의 배열, 그래서 당신이 버튼을 거기에서 선택하고자하는 모든 URL을 넣어.
  • Int(arc4random_uniform(UInt32(websites.count)))
  • 은 배열에있는 마지막 항목입니다 0websites.count 사이의 임의의 숫자를 (선택합니다 마법의 일부입니다.

당신은 스위프트 (또는 프로그램)를 처음 사용하는 경우,이 혼란 들릴 수도 당신에게, 흥분하지 않는, 단지 연습을 계속

행운을 빈다

는, URL 문자열의 배열을 만드는 것은 매우 간단합니다 우선입니다
+0

안녕하세요, 도움을 주셔서 대단히 감사합니다! 하지만 '웹 사이트 .count'가 'int'유형의 값을 예상 인수 유형 'UInt32'로 변환 할 수 없다는 오류가 표시됩니까? –

+0

@ H.Sunner 제 잘못, 형식 불일치를 완전히 잊었습니다. 위의 코드를 수정 했으므로 이제는 제대로 작동해야합니다. –

+0

완벽하게 작동했습니다. 정말 고마워요! –

1

:.!

에 작동 Array

let randomURL = urls[Int(arc4random_uniform(UInt32(urls.count)))] 

그러나, 당신이 그것을 할 수있는 또 다른 방법은 확장을 추가하는 것입니다 :이 코드의 긴 줄에 배열 된 URL 502,263,210

지금, 당신은 임의의 요소를 얻을 수 모든 배열 : 이제

extension Array { 
    public var random: Element? { 
    let index = Int(arc4random_uniform(UInt32(self.count))) 
    return self.count>0 ? self[index] : nil 
    } 
} 

는 URL을 배열의 임의 요소를 얻는 것은 쉽지있는 그대로 :

urls.random 

이것은 Optional을 반환합니다 (배열에 요소가 없으면 random 속성은 nil을 반환하기 때문입니다).

@IBAction func Website(_ sender: Any) { 
    if let urlString = urls.random, 
    let url = URL(string: urlString) { 
    UIApplication.shared.openURL(url as URL) 
    } 
} 

추신 : 그래서 코드에서 당신은 또한 random 속성의 결과 랩을 해제해야합니다 코드에 대한 의견의 몇 :

  • 난 당신이 WebsiteopenRandomWebsite에 이름을 추천합니다 (스토리 보드 연결도를 변경하는 기억). 방법은 그들이하는 일을 설명하고 소문자로 시작해야합니다. 관심이 있다면 신속한 일반 코드 규칙 here.
  • openURL 메서드는 iOS 10에서 사용되지 않으므로 open(_:​options:​completion​Handler:​) 메서드를 사용하는 것이 좋습니다.

귀하의 코드는 같을 것이다 : 당신은 스위프트의 'NSURL`을 사용하는 이유는

UIApplication.shared.open(url, options: [:], completionHandler: { (success) in 
     //URL opened 
    }) 
+0

안녕하세요, 귀하의 방법을 사용해 보았지만 '인스턴스 멤버'를 사용할 수 없습니다. '; 속성 초기화 자 '&'오류 '유형의'[String] '멤버에'임의 '멤버가 없습니다? –

+0

확장 코드'Array'를 코드에 추가 했습니까? Swift 3/Xcode 8.3을 사용하고 있습니까? –