0

I m new to ios.i used following code.i am creating constant file.this file i need all over in program. from that file i need json dictionary. how i can get this plz help me out.

 #import "constFile.h"
 #import "SBJsonParser.h"
 @implementation constFile

 - (void) alertStatus:(NSString *)msg :(NSString *)title
 {
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
                                                    message:msg
                                                   delegate:self
                                          cancelButtonTitle:@"Ok"
                                          otherButtonTitles:nil, nil];

     [alertView show];
 }
 -(void)jsonPost:(NSString *)string
 {
     NSString *loginJson=[NSString stringWithFormat:@"data=%@",string];
     NSLog(@"jsonstring%@",loginJson);
     NSURL *url=[NSURL URLWithString:@"http://lbwt-sl-745515119.ap-southeast-                       1.elb.amazonaws.com:8080/wsserver.php"];

     NSData *postData = [loginJson dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

     NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
     [request setURL:url];
     [request setHTTPMethod:@"POST"];
     [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
     [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
     [request setHTTPBody:postData];

     //[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

     NSError *error = [[NSError alloc] init];
     NSHTTPURLResponse *response = nil;
     NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

     NSLog(@"Response code: %d", [response statusCode]);
     if ([response statusCode] >=200 && [response statusCode] <300)
     {
         NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
         NSLog(@"Response ==> %@", responseData);

         SBJsonParser *jsonParser = [[SBJsonParser alloc]init];
         json = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];
         NSLog(@"%@",json);

     } else
     {
         if (error) NSLog(@"Error: %@", error);
         [self alertStatus:@"Connection Failed" :@"Login Failed!"];
     }
}

@end

i want access json dictionary an all program how can i do.

Ossir
  • 3,109
  • 1
  • 34
  • 52
Saba Sayed
  • 181
  • 2
  • 4
  • 11

2 Answers2

0

you can make class as UserdataSingleton which you can use all over your application. this code template may help you:

#import <Foundation/Foundation.h>

@interface UserDataSingleton : NSObject
{
    @private
    NSDictionary *globalDictionary;

}

+(UserDataSingleton *) getInstance;
-(void)saveInUserDatasingletonWithDictionary:(NSDictionary *)dictionary;
-(NSDictionary *)getGlobalDictionary;

@end

and implementation file will be some thing like:

#import "UserDataSingleton.h"

@implementation UserDataSingleton

static UserDataSingleton *userDataSingletonInstance;


+(UserDataSingleton *) getInstance
{
    if (userDataSingletonInstance == nil) {
        userDataSingletonInstance = [[UserDataSingleton alloc] init];
    }
    return userDataSingletonInstance;
}

-(void)saveInUserDatasingletonWithDictionary:(NSDictionary *)dictionary
{
    globalDictionary = dictionary;
}
-(NSDictionary *)getGlobalDictionary
{
    return globalDictionary;
}
@end

================== usage:

#import "constFile.h"
#import "SBJsonParser.h"

#import "UserDataSingleton.h"
#define USERDATASINGLETON (UserDataSingleton *)[UserDataSingleton getInstance]

......................your code...

. ..

         json = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];
     NSLog(@"%@",json);
[USERDATASINGLETON saveInUserDatasingletonWithDictionary:json];

Now to access json lets say you have YourViewController class.

NSMutableArray *yourArrayFromWebResponse = [USERDATASINGLETON getGlobalDictionary];

it will help you.

Sanandrea
  • 2,112
  • 1
  • 27
  • 45
maddy
  • 4,001
  • 8
  • 42
  • 65
0

define a property in your appdelegate, i.e

@property (nonatomic, retain) NSArray *jsonArray;

then assign you json to that property in appDidFinishLaunchingWithOptions

then where you want to access it:

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
NSString *aString = [appDelegate.jsonArray objectForKey:@"any_key"];
thorb65
  • 2,696
  • 2
  • 27
  • 37