2016-09-14 99 views
-4

下面是我的代码,我用来从Google帐户获取数据,我想在其他视图中使用电子邮件地址作为登录ID。如何将从json检索的数据从一个视图传递到另一个视图?

此代码位于我的FirstViewController中,我想在另一个视图中使用电子邮件。

请帮助:)

- (void)finishedWithAuth:(GTMOAuth2Authentication *)auth 
       error:(NSError *)error { 
if (error) { 
    return; 
} 


NSString *accessTocken = [auth valueForKey:@"accessToken"]; // access tocken pass in .pch file 

NSLog(@"%@",accessTocken); 
NSString *str=[NSString stringWithFormat:@"https://www.googleapis.com/oauth2/v1/userinfo?access_token=%@",accessTocken]; 
NSString *escapedUrl = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",escapedUrl]]; 
NSString *jsonData = [[NSString alloc] initWithContentsOfURL:url usedEncoding:nil error:nil]; 
NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:[jsonData dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&error]; 
NSString *userId=[jsonDictionary objectForKey:@"email"]; 

NSLog(@" user data %@",jsonData); 
NSLog(@"Received Access Token:%@",auth); 
NSLog(@"email id : %@ ",userId); 

GTLServicePlus* plusService = [[GTLServicePlus alloc] init]; 
plusService.retryEnabled = YES; 
[plusService setAuthorizer:auth]; 
GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:userId]; 

[plusService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,GTLPlusPerson *person,NSError *error) { 
    if (error) { 
     GTMLoggerError(@"Error: %@", error); 
    } else { 
     // Retrieve the display name and "about me" text 
     // [person retain]; 
     NSString *description = [NSString stringWithFormat: 
           @"%@\n%@", person.displayName, 
           person.aboutMe]; 
     GTLPlusPersonImage *image =person.image; 
     NSString *strimag=[image valueForKey:@"url"]; 

     // [self setImageFromURL:[NSURL URLWithString:strimag]]; 
     NSData *receivedData = [NSData dataWithContentsOfURL:[NSURL URLWithString:strimag]]; 

     UIImage *img = [[UIImage alloc] initWithData:receivedData ]; 
     receivedData=UIImageJPEGRepresentation(img,50); 
     NSLog(@"description %@",description); 
    } 
}]; 
if ([GPPSignIn sharedInstance] == true) { 
    [self performSegueWithIdentifier:@"pass" sender:self]; 
     } 

    [[GPPSignIn sharedInstance] signOut]; 
} 
+0

,你能否告诉prepareforsegue的利用代码,也可以请您给您的目的地视图控制器的名字吗? –

+0

@NiravD CreatePasswordViewController它是,我必须导航到这个时候,来自谷歌帐户的值被提取,我想用电子邮件来创建新帐户。 –

回答

1

这里有一些方法来节省内部应用程序数据。

  1. 使用sqlitecoredata都提供facilty保存本地数据,使用前请找到使用这些数据库的不同情况建立本地数据库。
  2. 使用NSUserDefaluts但没有推测,因为NSUserDefaults并不意味着存储敏感信息以获取更多信息,请参阅imp link如果您还在,请参阅示例。随时随地

    [[NSUserDefaults standardUserDefaults]setObject:self.textfield.text forKey:@"yourKey"]; 
    

    为了得到里面的数据应用:

要使用NSUserDefaluts存储数据

object = [[NSUserDefaults standardUserDefaults] valueForKey:@"yourKey"]; 
+0

我应该在哪里放这个代码? –

+0

保存从'viewController'添加的电子邮件地址,您可以使用'yourKey'在应用程序中的任意位置输入并获取信息。请参阅我的答案。 – vaibhav

相关问题