即使在 Xcode 6.3 中更新了 Facebook,AppDelegate 应用程序功能中的 Facebook SDK 错误
Facebook SDK error in AppDelegate application function even with updated Facebook in Xcode 6.3
所以我更新了 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;
如果有人能帮忙请帮忙!
我在升级到 XCode 6.3 和 Swift 1.2 后也遇到了这个问题。
问题似乎是函数中的 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?
另请注意从 AnyObject
到 AnyObject?
的变化。如果不更改,编译器仍会报错。
所以我更新了 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;
如果有人能帮忙请帮忙!
我在升级到 XCode 6.3 和 Swift 1.2 后也遇到了这个问题。
问题似乎是函数中的 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?
另请注意从 AnyObject
到 AnyObject?
的变化。如果不更改,编译器仍会报错。