尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序
Posted
技术标签:
【中文标题】尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序【英文标题】:Trying to add facebook to app with parse and app crashes 【发布时间】:2014-01-03 04:00:29 【问题描述】:我正在尝试将 Facebook 添加到我的应用中,这就是我在视图控制器中所做的:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
return self;
- (IBAction)faceBookLoginPressed:(id)sender
[self presentViewController:self.loginViewController animated:NO completion:NULL];
这会导致应用程序崩溃,我明白了:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'应用程序试图呈现一个 目标上的 nil 模态视图控制器。'
在我的应用程序委托中:
[Parse setApplicationId:@“********************************************"
clientKey:@"********************************************"];
[PFFacebookUtils initializeFacebook];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
这就是我迈出的第一步。我要做的就是让我的应用程序进入网络并让我像这样登录 Facebook:
https://www.parse.com/tutorials/scrumptious
到目前为止,我对 Parse 很困惑,所以请耐心等待。提前致谢。
【问题讨论】:
您是否提供了您的 applicationID 和 ClientKey 来初始化 Parse? 是的,我做到了。我只是把它们掩盖了 你的崩溃日志是什么 您使用的是 XIB 还是故事板? 故事板,我试试你的答案@i_duhh_bomb 【参考方案1】:通常导致 ViewController 为 nil 的原因是它没有被初始化。虽然我可以在您的代码中看到您在此处完成了该操作:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
return self;
问题是,我认为只有当你有笔尖时才会调用它。如我错了请纠正我。因为我在您的代码中看不到任何其他错误。我将假设您正在使用情节提要。如果是这种情况,请替换:
- (IBAction)faceBookLoginPressed:(id)sender
[self presentViewController:self.loginViewController animated:NO completion:NULL];
有了这个
- (IBAction)faceBookLoginPressed:(id)sender
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
[self presentViewController:self.loginViewController animated:NO completion:NULL];
然后继续删除这个:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
return self;
希望是这样!
【讨论】:
以上是关于尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序的主要内容,如果未能解决你的问题,请参考以下文章
android 应用程序在首次尝试在发布模式下使用 Facebook sdk 共享数据时崩溃