Я новичок в разработке iphone, я хочу создать изменяемый массив, который может доступ и заполнение из разных контроллеров представления. Как мне это сделать? Если можно, дайте пример кода
Как создать NSMutable Array, к которому можно получить доступ из разных контроллеров представления
Ответы (3)
В большинстве случаев не нужно и не полезно использовать глобальные переменные. Если вам нужно их использовать, самый простой способ — поместить массив в ваш AppDelegate.
Вы можете получить доступ к массиву (имя массива в AppDelegate здесь) с помощью:
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *aArray= [appDelegate array];
В MVC у вас есть представления, контроллеры и модели. Вы должны нажимать как можно больше вниз. Несколько представлений и контроллеров могут работать с одной и той же моделью, управляющей данными и бизнес-логикой.
В вашем случае у вас есть простой набор общих данных — изменяемый массив.
Я бы предложил создать класс, который содержит этот изменяемый массив и предоставляет методы. Распространенным шаблоном является то, что этот класс является синглтоном.
Таким образом, несколько контроллеров будут делать.
MyModel *model = [MyModel sharedInstance];
Тогда оба контроллера могут работать на нем.
Вот хорошая статья на эту тему: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
синглтон от Apple: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32
Надеюсь, это поможет.
В вашем массиве отклонений @interface YourClass
:
@property (nonatomic, retain) NSMutableArray *publicArray;
В своем @implementation YourClass
напишите это:
@synthesize publicArray;
Если у вас будет ссылка yourClassVariable
на этот объект, вы можете получить доступ к этой переменной, используя [yourClassVariable publicArray];
или yourClassVariable.publicArray;