2014-09-19 71 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

相關問題