Получение View Controller для извлечения данных из файла модели данных

Я довольно новичок в программировании. Я создаю очень простое приложение iOS Quiz только для практики. Вот что я сделал до сих пор:

  • Я создал проект Xcode, используя шаблон "Single View". Таким образом, у меня уже есть файлы appDelegate, View Controller и View (файл XIB).

    • На мой взгляд только четыре контроллера: 2 UILabels и 2 UIButton. Каждая кнопка в паре с меткой. У меня есть все соединения для установки этих 4 контроллеров. Когда пользователь нажимает кнопку с надписью "Получить состояние", он должен заполнить свою метку названием состояния, которое у меня есть, в NSMutableArray с именем stateArray. Когда пользователь нажимает на кнопку с надписью "Получить капитал", необходимо заполнить свою метку капиталом штата в своей метке.

    • Я создал класс Objective-C, который наследуется от NSObject для хранения моей модели данных под названием dataModel. В файле dataModel.m я создал и заполнил два массива.

    • В файле.m контроллера контроллера я импортировал файл dataModel.h.

Единственная проблема, с которой я столкнулся - это заставить контроллер представления извлекать данные из файла dataModel. Я читал, что, вероятно, мне следует использовать делегирование, но я просто хочу узнать, как это сделать проще... Я готов кое-что о контроллере представления, и файл модели данных должен иметь ссылки друг на друга? Если так, то как бы выглядела кодировка?

Вот мое кодирование до сих пор:

#import <UIKit/UIKit.h>
@interface onMyOwnViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *stateField;
@property (weak, nonatomic) IBOutlet UILabel *answerField;

- (IBAction)answerButton:(id)sender;
- (IBAction)stateButton:(id)sender;
@end




#import "onMyOwnViewController.h"
#import "dataModel.h"

@implementation onMyOwnViewController

- (IBAction)stateButton:(id)sender
{

    NSString *myState = [stateArray objectAtIndex:0]; //this line produces an error.
    [_stateField setText:myState];
    [_answerField setText:@"hi"];    
}

- (IBAction)answerButton:(id)sender
{

}
@end

Ниже моя dataModel кодировка:

#import <Foundation/Foundation.h>

@interface dataModel : NSObject

@property(nonatomic, strong) NSMutableArray *answerArray;
@property(nonatomic, strong) NSMutableArray *stateArray;

@end



#import "dataModel.h"
#import "onMyOwnViewController.h"

@implementation dataModel

- (id)init
{
    self = [super init];
    if(self){
    _answerArray = [[NSMutableArray alloc]initWithObjects:@"Michigan", @"Illinios", nil];

    _stateArray = [[NSMutableArray alloc]initWithObjects:@"Lansing", @"Springfield",
                   nil];
    }

    return self;
}
@end

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

1 ответ

Решение

Вам нужно создать экземпляр вашей dataModel в onMyOwnViewController.

@implementation onMyOwnViewController {
  dataModel *data;
}

-(void)viewDidLoad {
  data = [[dataModel alloc] init];
}

Тогда в вашем методе вызова

- (IBAction)stateButton:(id)sender
{

   NSString *myState = data.stateArray[0];
   ...
}
Другие вопросы по тегам