Получение 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];
...
}