Cómo save la respuesta de Mi server y ¿Cómo puedo acceder a esa información?

Hola, estoy obteniendo la respuesta de mi server con éxito. Necesito tener acceso al user_id enviado por el server en mi aplicación.

revisa mi código:

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]]; NSURL * url = [NSURL URLWithString:@"my url"]; NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; NSString * params=[[NSString alloc]initWithFormat:@"mobile=%@",[self.reqnum text ]]; NSLog(@"%@",params); [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"Data = %@",text); [[NSUserDefaults standardUserDefaults]setObject:@"Y" forKey:@"login"]; [[NSUserDefaults standardUserDefaults] synchronize]; } }]; [dataTask resume]; 

para este código obtuve la respuesta como:

aquí necesito acceder a user_id en mi aplicación. así puedo get ese user_id en particular.

Gracias.

Dado que las soluciones originales ya se han publicado, me centraré en una forma más larga y tediosa, que creo que es la forma adecuada de manejar el elefante en la habitación. Esto lo ayudará en el largo ploop.

Cree una class Singleton ya que solo puede haber un usuario conectado a la vez.

ShanetworkingUser.h

 #import <Foundation/Foundation.h> @interface ShanetworkingUser : NSObject @property (strong, nonatomic) NSString* userId; @property (strong, nonatomic) NSString* userName; @property (strong, nonatomic) NSString* subscriptionStatus; @property (strong, nonatomic) NSString* registerDate; @property (strong, nonatomic) NSString* expiryDate; +(ShanetworkingUser*) getInstance; @end 

ShanetworkingUser.m

 #import "ShanetworkingUser.h" @implementation ShanetworkingUser static ShanetworkingUser * shanetworkingInstance; +(ShanetworkingUser*) getInstance { @synchronized(self) { if(shanetworkingInstance == nil) { shanetworkingInstance = [[ShanetworkingUser alloc] init]; shanetworkingInstance.userName = @""; shanetworkingInstance.userId = @""; shanetworkingInstance.subscriptionStatus = @""; shanetworkingInstance.registerDate = @""; shanetworkingInstance.expiryDate = @""; return shanetworkingInstance; } else { return shanetworkingInstance; } } } 

Convierta su respuesta en NSDictionary .

 NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer 

Rellene su shanetworkingInstance con los attributes de resultado:

 [ShanetworkingUser getInstance].userId = [json_dict objectForKey:@"user_id"]; [ShanetworkingUser getInstance].userName = [json_dict objectForKey:@"username"]; [ShanetworkingUser getInstance].subscriptionStatus = [json_dict objectForKey:@"subscription_status"]; [ShanetworkingUser getInstance].registryDate = [json_dict objectForKey:@"register_date"];//Better to use NSDate type instead of NSString [ShanetworkingUser getInstance].expiryDate = [json_dict objectForKey:@"expiry_date"]; 

Ahora los attributes de su usuario estarán disponibles en cualquier lugar de la aplicación. Solo necesita importar ShanetworkingUser.h a UIView , UIViewController y tipo UIViewController para acceder a sus datos:

 NSString *userId = [ShanetworkingUser getInstance].userId; 

También tenga en count que estoy usando el patrón singleton porque estoy asumiendo que solo necesita manejar los attributes de un usuario que se usarán en varios controlleres de vista en el lapso de time. Si necesita varios usuarios guardados, cree una class de model de usuario similar y rellénelos de manera similar. (Simplemente no los hagas singleton).

También sugiero que lea los tutoriales de la serie de Ray Wenderlich sobre:

1. Diseño orientado a objects
2. Patrones de layout
3. Introducción a los patrones de layout de iOS

Si desea usar el valor en otras classs, entonces:

Primero cree una class de model de datos, analice el dictionary de datos / JSON y guárdelo. Al usar el bloque de finalización, puede devolver el identificador de usuario específico / recibido a la persona que llama.

Aquí te encuentras en JSON, puedes analizarlo y get los datos deseados:

 NSDictionary *respDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; NSString *userID = respDict[@"user_id"]; 

La respuesta es un object JSON. Si lo que estás preguntando es cómo analizarlo, entonces hay un analizador JSON incorporado en iOS.

 NSDictionary *json_dict = [text JSONValue]; NSString *userID = [result objectForKey:@"user_id"]; 

Cree un NSDictionary para get datos json.

  NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; NSString *userID = [dictionary objectForKey:@"user_id"]; } }]; 

Sí, es hasta usted cómo almacenar datos y si quiere analizarlo, intente

 NSDictionary *jsonDict = [responseString JSONValue]; NSString *user_id = [jsonDict objectForKey:@"user_id"]; 

Analiza los datos que obtienes en bloque de la siguiente manera.

 completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; NSDictionary *response = JSON[@"user_id"]; } }]; 

Puede hacer un NSDictionary, save los datos JSON en él y get user_id de él. Me gusta esto:

 NSDictionary *dictionaryName=[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSString *user_id= [dictionaryName valueForKey:@"user_id"];