【问题标题】:Trying to add facebook to app with parse and app crashes尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序
【发布时间】: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

标签: ios iphone facebook crash parse-platform


【解决方案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;
}

希望是这样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多