2017-02-06 2 views
-2

BEGINNER ALERT! 제가이 플랫폼과 언어에 익숙하지 않기 때문에 저는 5 살짜리처럼 저에게 말하십시오. 나는 고맙고 무오류하게 될 것이다.XCode 8.2.1에서 NSURL 오류가 발생했습니다.

는 나는 응용 프로그램 홈 페이지에 버튼에서 기본 브라우저에서 웹 사이트를 열려면 내 Xcode 프로젝트에 다음 코드 한

:

@IBAction func faceURL(_ sender: Any) { 
    NSURL *spotiURL = [NSURL URLWithString:@"https://www.facebook.com"]; 

    [[UIApplication sharedApplication] openURL:faceURL options:@{} completionHandler:^(BOOL success) { 
     if (success){ 
      NSLog(@"Opened url"); 
     } 
    }]; 
} 

라인에가 :

NSURL *spotiURL = [NSURL URLWithString:@"https://www.facebook.com"]; 

그건 다음 오류가 발생했습니다 :

Expected "," separator Consecutive statements on a line must be separated by ";"

콜론 사이에과 URL 앞에 @ 기호가 있습니다. 이 중 일부는 새로운 Xcode 및 Swift 형식으로 사용되지 않지만이 특정 문제에 대한 간단한 대답을 찾을 수는 없습니다. 당신의 지혜에 미리 감사드립니다.

UPDATE이에 도움을 준 사람들에게 감사합니다. 경우 다른 사람이 여기에이 문제를 통해 제공되는 버튼을 터치하고 기본 브라우저에서 URL을 엽니 다하기 위해 노력하고 결국 코드입니다 :

@available(iOS 10.0, *) 
@IBAction func openURL(_ sender: Any) { 
let openURL = URL(string: "https://www.facebook.com") 
UIApplication.shared.open(openURL!, options: [:], completionHandler: nil) 
} 

나는 또한 원래 버튼 및 해당 참조를 삭제했다 ViewController, 단추를 대체하고 작동하도록하려면 ViewController와의 새로운 연결을 수행하십시오. 많은 감사합니다!

+1

분명히 당신이 붙여 넣기를 복사하는 것이 가장 빠릅니다. nsurl 개체를 만들기위한 객관적 c 스 니펫을 신속한 구문으로 함수 내에서 복사했습니다. Mac은 전혀 작동하지 않았기 때문에 운이 좋았습니다. – TheFuquan

답변

0

Swift 메서드에서 Objective C 코드를 사용하려는 것 같습니다.

@IBAction func faceURL(_ sender: Any) { 

    if let facebookURL = URL(string: "https://www.facebook.com") 
    { 
     UIApplication.shared.openURL(facebookURL) // the open method you were using doesn't exist in Swift 
    } 
} 

난 당신이 아이폰 OS 개발의 기초를 배울 수있는 몇 가지 튜토리얼을 통해 작동 좋을 것 : 프로젝트가 스위프트로 작성된 경우,이 코드는 당신이 필요로 (아마도)입니다.

+0

그가 사용했던 방법이 존재하고 컴파일되지만 iOS 10에서만 사용할 수 있습니다. 따라서 if #available (iOS 10.0, *) {} else {}'가 필요합니다. – Mentos

+0

감사합니다. @JedSoane 오류 메시지를 제거하고 시뮬레이터에서 컴파일하고 실행할 수있었습니다. 버튼을 클릭하면 tho가 충돌합니다. "THREAD 1 : Signal SIGABRT"는 AppDelegate 파일의 줄 옆에 나타납니다 : "class AppDelegate : UIResponder, UIApplicationDelegate {"왜 그런 일이 일어날 지에 대한 아이디어가 있습니까? 이것은 나에게 그리스어 같다. 그러나 나는 배우고있다! –

+0

@ D.W. 단추가 존재하지 않는 메서드에 연결되어있는 것 같아요. 예를 들어 IBAction 메서드의 이름을 변경하면 단추가 여전히 이전 메서드 이름에 연결되어 SIGABRT를 가져옵니다. 스토리 보드를 사용하는 경우 스토리 보드를 열고 버튼을 선택하고 이전 연결을 삭제 한 다음 새 방법에 연결하는 새 스토리를 만듭니다. –

0

첫째 :spotiURL을해야 할 때 openURLfaceURL 있습니다.

둘째 : 당신은 내가 당신을 위해 할 것입니다 : 당신은 스위프트로의 Obj-C에서 SO에서 복사 한 코드를 변환하는 것을 의미

let spotiURL = URL(string: "https://www.facebook.com") 
UIApplication.shared.openURL(spotiURL!) 
+0

질문에 올바르게 태그가 지정되었습니다. 문제는 OP가 Objective-C 코드를 복사하여 Swift 파일에 붙여 넣었다는 것을 알 수 없다는 것입니다. – rmaddy

+0

감사합니다. @Mentos. 이것은 아래 라인의 느낌표를 제외하고는 오류가 발생하는 것 같습니다 : UIApplication.shared.openURL (spotiURL!) –

0

글쎄, 당신은 스위프트 (첫 번째 줄)을 혼합하고, ObjC (다른 모든 구문) 구문이므로 먼저 그 중 하나를 선택해야합니다. 당신의 "혼합 된"코드는 훌륭하게 보입니다.

+0

Thanks @ Zeb. 이 기능 문제에 대한 여러 제안 된 솔루션을 구문 분석하는 중입니다. –