XCode 8.2.1 中的 NSURL 错误

NSURL Error in XCode 8.2.1

初学者注意!请像我是 5-year-old 一样跟我说话,因为我是这个平台和语言的新手。我将不胜感激并且不会被冒犯。

我的 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 格式弃用,但我找不到针对此特定问题的直接答案。预先感谢您的智慧。

更新

感谢为此提供帮助的人们。如果其他人遇到此问题,这里是最终用于触摸按钮并在本机浏览器中打开 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 重新连接以使其正常工作。非常感谢!

首先: 你在 openURL 中有 faceURL 而它应该是 spotiURL.

其次: 你的意思是将从 SO 复制的代码从 Obj-C 转换为 Swift 我会为你做:)

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

好吧,您正在混合使用 Swift(第一行)和 ObjC(所有其他)语法,因此您必须首先选择其中一个。顺便说一下,您的 "mixed" 代码看起来不错。

您似乎正试图在 Swift 方法中使用 Objective C 代码。如果您的项目是用 Swift 编写的,那么这(可能)就是您需要的代码:

@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
    }
}

我建议您通过一些教程来学习 iOS 开发的基础知识。