How to create a NSMutable Array which can access from different view controllers

半世苍凉 提交于 2019-12-01 22:39:16

In most cases its not needed nor helpfull to use global variables. If you have to use them the easiest way is to put the array in your AppDelegate.

You can access the Array (named array in AppDelegate here) with :

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

NSArray *aArray= [appDelegate array];

In MVC, you have views, controllers and models. You should push as much down as possible. Multiple views and controllers can operate on the same model that controls the data and business logic.

In your case, you have a simple set of shared data - a mutable array.

I would suggest create a class that contains that mutable array and exposes methods. A common pattern is for that class to be a singleton.

So, the multiple controllers would do.

MyModel *model = [MyModel sharedInstance];

Then both controllers can operate on it.

Here's a good article on the topic: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

singleton from apple: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32

Hope that helps.

In your @interface YourClass decline array:

@property (nonatomic, retain) NSMutableArray *publicArray;

In your @implementation YourClass write this:

@synthesize publicArray;

If you will have reference yourClassVariable to that object you can access that variable using [yourClassVariable publicArray]; or yourClassVariable.publicArray;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!