AppDelegate 应用程序功能中的 Facebook SDK 错误,即使在 Xcode 6.3 中更新了 Facebook

Posted

技术标签:

【中文标题】AppDelegate 应用程序功能中的 Facebook SDK 错误,即使在 Xcode 6.3 中更新了 Facebook【英文标题】:Facebook SDK error in AppDelegate application function even with updated Facebook in Xcode 6.3 【发布时间】:2015-04-11 17:43:22 【问题描述】:

所以我更新了 Xcode 并得到了一堆很容易修复的错误,但是在更新 FBSDK 后,我的 AppDelegate 中出现了一个错误,我似乎无法修复:

/Users/wylerzahm/Desktop/AppName/AppName/AppDelegate.swift:23:58: Cannot invoke 'application' with an argument list of type '(UIApplication, openURL: NSURL?, sourceApplication: NSString?, annotation: [NSObject : AnyObject]?)'

给出错误的实际函数如下:

func application(application: UIApplication, openURL url: NSURL?, sourceApplication: NSString?, annotation: [NSObject: AnyObject]?) -> Bool 
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

该功能是 Facebook 登录工作所必需的。任何帮助表示赞赏。 被调用的函数如下:

@interface FBSDKApplicationDelegate : NSObject

+ (instancetype)sharedInstance;

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

如果有人可以帮忙,请!

【问题讨论】:

发布被调用函数的声明。 我添加了被调用函数的代码 【参考方案1】:

在使用 Swift 1.2 升级到 XCode 6.3 后,我也遇到了这个问题。

问题似乎是函数中的sourceApplication类型从NSString更新为String

func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool 
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

应该是这样的:

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

干杯!

编辑:正如 Ruud Kalis 所说,注释类型也从 AnyObject 更新为 AnyObject?

【讨论】:

谢谢老兄!像魅力一样工作! 完美的小伙伴,谢谢,你帮我省了一些麻烦。【参考方案2】:

还要注意从 AnyObjectAnyObject? 的更改。如果不更改,编译器仍然会报错。

【讨论】:

以上是关于AppDelegate 应用程序功能中的 Facebook SDK 错误,即使在 Xcode 6.3 中更新了 Facebook的主要内容,如果未能解决你的问题,请参考以下文章

viewcontrller 中的应用程序委托功能 - Facebook

ios怎么用face book

如何从 ViewController 或其他地方调用或触发 AppDelegate 中的通知功能?

如何使用swift获取appdelegate中的当前位置

Android 使用FACE++架构包实现人脸识别

AppDelegate Swift 中的选项卡式应用程序和核心数据函数