试图通过解析和应用程序崩溃将Facebook添加到应用程序

时间:2014-01-03 04:00:29

标签: ios iphone facebook crash parse-platform

我正在尝试将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模态视图控制器在目标上。'

在app委托中我有:

 [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非常困惑,所以请耐心等待我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

通常导致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;
}

希望情况确实如此!