尝试将Facebook添加到具有解析和应用程序崩溃的应用程序



我正在尝试将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",原因:"应用程序试图呈现 目标上的模式视图控制器为零。

在应用程序代表中,我有:

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

通常导致视图控制器为零的原因是它没有被初始化。虽然我可以在你的代码中看到你已经在这里完成了:

- (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;
}

希望是这样!

最新更新