2014-09-19 69 views
0

我试图在用户通过Facebook登录到我的应用程序后保存用户名和用户电子邮件。 我已经设置了一个segue来将信息从登录视图控制器传递给视图控制器,我计划将用户字符串和其他一些字符串保存到我的sqlite数据库中。 当我在目标视图控制器中运行我的应用程序并尝试将所有数据插入到sqlite时,我引发了一个错误,指出userName和userEmail是零字符串,因此我的数据未被保存。我已经正确设置了赛格。合成,添加特性。但在我看来,问题可能在于我如何检索数据。帮助将不胜感激!先谢谢你!如何将Facebook用户信息发送到其他视图控制器?

-(void)prepareForSegue:(UIStoryboardSegue *)segue user:(id<FBGraphUser>)user sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"loginInfo"]) { 
     NSString *name = user.name; 
     NSString *email = [user objectForKey:@"email"]; 
     ViewController *vc = (ViewController *)[segue destinationViewController]; 
     vc.userName = name; 
     vc.userEmail = email; 
     NSLog(@"user data is being prepared to segue"); 
    } 
} 
+0

我认为'用户'是Facebook的用户,谁在我的应用程序中登录Facebook。我认为segue工作正常,但由于某种原因,字符串被返回为零,所以即时通讯猜测我没有正确地保存字符串之前被正确的segued。 – 2014-09-19 07:32:57

回答

0

你用 - (空)prepareForSegue:(UIStoryboardSegue *)赛格瑞用户:(ID)用户发送者:(ID)发送

有在UIViewController类赛格瑞平仓没有这样的方法。而不是使用 -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([segue.identifier isEqualToString:@"loginInfo"]) { 
     NSString *name = user.name; 
     NSString *email = [user objectForKey:@"email"]; 
     ViewController *vc = (ViewController *)[segue destinationViewController]; 
     vc.userName = name; 
     vc.userEmail = email; 
     NSLog(@"user data %@, email %@",name,email); 
    } 
} 

要获得用户信息,您需要实施Facebook委托。

- (void)meRequestResult:(id)result WithError:(NSError *)error 
{ 
    NSLog(@"result %@",result); 

    if ([result isKindOfClass:[NSDictionary class]]) 
    { 
     NSDictionary *dictionary; 
     if([result objectForKey:@"data"]) 
      dictionary = (NSDictionary *)[(NSArray *)[result objectForKey:@"data"] objectAtIndex:0]; 
     else 
      dictionary = (NSDictionary *)result; 


     email = [dictionary valueForKey:@"email"]; 
     fName = [dictionary valueForKey:@"first_name"]; 
     lName = [dictionary valueForKey:@"last_name"]; 

    } 
} 
+0

如果我删除用户:(编号)用户,user.name成为未声明的标识符,所以如何从Facebook登录返回数据,以便我可以保存它? – 2014-09-19 07:24:52

+0

在.h文件中声明实例变量FBGraphUser * fbUser。并在facebook委托中保存fbUser中的FBGraphUser数据对象。然后,您将能够使用.m文件的任何方法访问fbUser对象。如果有帮助,接受答案。 – iOSGeek 2014-09-19 08:00:20

+0

所以FBGraphUser不是一个类,它的一个协议,我已经将它添加到我的类,那么我应该声明什么? – 2014-09-19 09:32:09

相关问题