I have an application in which I have a webservice call that returns data as a dictionary. I want to access this dictionary in another view controller for loading the values
I am assuming that the webservice is called because something happened (button clicked, viewDidLoad
/viewDidAppear
). If this is the case, passing a reference of the UIViewController
to the webservice class is a perfect valid option. Keep in mind that for this relationship you should create a protocol, so on your webservice class you have something like this:
id<ViewControllerResponseProtocol> referenceToViewController;
This ViewControllerResponseProtocol
would define a method like this:
-(void)responseFromWebservice:(NSDictionary*)myDictionary;
So when the webservice class has build the NSDictionary
you can the above method from the referenceToViewController
:
[referenceToViewController responseFromWebservice:myDictionary];
If there isn't any kind of relationship between both, you use could NSNotificationCenter
for it.
P.S: The solution of skram is perfectly valid if you already have the NSDictionary
from the webservice on the initial UIViewController
and now you want to pass it to a new UIViewController
. Although I don't think that's what you want.
You could define an NSDictionary
property in your AnotherViewController
and set it from the previous controller. I'll give a brief example below.
//.h
@interface AnotherViewController {
NSDictionary *data;
}
@property(nonatomic,retain) NSDictionary *data;
@end
//.m
@implementation AnotherViewController
@synthesize data;
Now from the current controller, after initializing AnotherViewController
you set the dictionary before presenting it.
AnotherViewController *controller = [[AnotherViewController alloc] init];
controller.data = myCurrentDictionary;
Now AnotherViewController
has a data
property with the value of the previous controller.
Hope this helps.