39

Xcode 更新后,编译器开始在工作代码上抛出错误(两个函数都在 AppDelegate.swift 中)。

func application(application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
{
    FBLoginView.self
    FBProfilePictureView.self
    return true
}

有错误:

/Users/../AppDelegate.swift:14:11:Objective-C 方法 'application:didFinishLaunchingWithOptions:' 由方法 'application( :didFinishLaunchingWithOptions:)' 提供,与协议中的可选要求方法 'application(:didFinishLaunchingWithOptions:)' 冲突'UIApplicationDelegate'

第二个

func application(application: UIApplication,        
                            openURL url: NSURL,
                            sourceApplication: NSString?,
                            annotation: AnyObject) -> Bool {
    var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication as! String)
    return wasHandled
}

有错误

/Users/../AppDelegate.swift:25:11:Objective-C 方法 'application:openURL:sourceApplication:annotation:' 由方法 'application( :openURL:sourceApplication:annotation:)' 提供,与可选要求方法 'application ( :openURL:sourceApplication:annotation:)' 在协议'UIApplicationDelegate'

我知道我很可能希望您以某种方式将这两个功能合二为一。我不明白为什么这段代码在 6.3 中突然停止工作,尽管它在 6.2 中工作。

4

5 回答 5

76

我不确定编译器抛出错误的确切原因,但是我确实看到这些相同方法的默认 Swift 版本有所不同。也许您可以将函数声明替换为使用普通 Swift 项目创建的函数声明:

1

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

2

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool

我建议用上面的方法替换你的方法声明,看看它现在是否可以编译。


编辑 1 (9/21/2015): 我已经确认这些现在是 Xcode 7 公开发布的最新版本。他们在声明 #2 中删除了可选的 ( annotation: AnyObject?) 并使其成为 ( )。annotation: AnyObject

于 2015-02-11T17:42:32.653 回答
24

在 XCode 6.3 中更改了didFinishLaunchingWithOptions函数的launchOptions参数的类型:

“启动选项:NSDictionary?” 变成了“launchOptions: [NSObject: AnyObject]?”

只需更改您的函数标题以匹配以下内容:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
于 2015-04-14T15:56:10.803 回答
5

您还应该确保使用正确的类型。使用String而不是NSString

于 2015-04-15T18:17:09.950 回答
2

尝试从 Xcode 完成再次覆盖该方法。为我工作。

于 2015-07-06T09:29:13.847 回答
0

启动选项已更改;尝试更改“launchOptions:NSDictionary?” 到“launchOptions:[NSObject:AnyObject]?”

希望这可以帮助!

于 2015-07-28T01:38:59.987 回答