Объявление массива в моей модели для использования в элементе управления - PullRequest
0 голосов
/ 23 февраля 2012

Я новичок в Objective-C и MVC.Я следил за курсами и лекциями Пола Хаггерти и многому научился.Я вступаю в фазу своего программирования, когда я на самом деле могу сидеть и кодировать рабочие приложения, а не только читать о разработке под iOS.

Мне трудно понять, как правильно использовать MVC.

Вот (ОЧЕНЬ ОСНОВНОЙ) код, который я написал и получил «работать»:

- (IBAction)buttonClicked {
    NSArray *namesArray = [NSArray arrayWithObjects:
                           (NSString *)@"Tiffany",
                           (NSString *)@"Jason",
                           (NSString *)@"Mustafa",
                           (NSString *)@"Mellisa",
                           (NSString *)@"Michael",
                           (NSString *)@"Kasim",
                           nil];

    if ([self.myDisplay.text
         isEqualToString:[namesArray objectAtIndex:0]]){
        self.myDisplay.text = [namesArray objectAtIndex:1];
    } else if ([self.myDisplay.text 
         isEqualToString:[namesArray objectAtIndex:1]]){
        self.myDisplay.text = [namesArray objectAtIndex:2];
    } else if ([self.myDisplay.text 
         isEqualToString:[namesArray objectAtIndex:2]]){
        self.myDisplay.text = [namesArray objectAtIndex:3];
    } else if ([self.myDisplay.text 
         isEqualToString:[namesArray objectAtIndex:3]]){
        self.myDisplay.text = [namesArray objectAtIndex:4]; 
    } else if ([self.myDisplay.text 
         isEqualToString:[namesArray objectAtIndex:4]]){
        self.myDisplay.text = [namesArray objectAtIndex:5];
    } else {
        self.myDisplay.text = [namesArray objectAtIndex:0];
    }

    self.numberOfLetters.text = [NSString stringWithFormat:@"%@ Letters", [NSString stringWithFormat:@"%d", self.myDisplay.text.length - 1]];
 }

Как вы можете видеть, он устанавливает массив, а затем, когда пользователь нажимает кнопку наНа экране отображается следующее имя и количество букв в этом имени.То, что я хочу сделать, это создать мой массив в моей модели, а затем получить к нему доступ через контроллер (это то, что вы должны делать правильно?)

Мой подход к этому заключался в создании класса модели (который яназывается мозгом).Я импортировал мозг в контроллер и в мозге создал свойство NSArray и синтезировал его.Но у меня возникают трудности с доступом к нему в контроллере.

Кроме того, я знаю, что то, как я это сделал сейчас, неверно, потому что я в основном воссоздаю массив каждый раз, когда пользователь нажимает кнопку.

Может кто-нибудь, пожалуйста, направлять меня?(Я использую ARC, кстати.)

Вот как я создал свой мозг "класс:

#import <Foundation/Foundation.h>

@interface Brain : NSObject
@property (nonatomic, strong) NSMutableArray *myNamesArray;

@end

#import "Brain.h"

@implementation Brain
@synthesize myNamesArray = _myNamesArray;

@end

1 Ответ

1 голос
/ 23 февраля 2012

Я бы просто следил за индексом.Определите его как свойство в заголовке вашего класса.Кроме того, вы, вероятно, не хотите продолжать создавать новые массивы.

@property (nonatomic) int index;
@property (nonatomic, retain) NSArray *namesArray;

Синтезируйте его в своей реализации:

@synthesize index, namesArray;

Создайте массив в своем методе init (или методе viewDidLoad, есливы предпочитаете):

self.namesArray = [NSArray arrayWithObjects:
                       @"Tiffany",
                       @"Jason",
                       @"Mustafa",
                       @"Mellisa",
                       @"Michael",
                       @"Kasim",
                       nil];

Если вы не используете ARC, обязательно освободите namesArray в методе dealloc.

Затем просто используйте его для установки текстовой строки.

- (IBAction)buttonClicked {
    self.index++;
    self.myDisplay.text = [self.namesArray objectAtIndex:index%[namesArray count]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...