让View Controller从数据模型文件中检索数据

时间:2013-03-20 19:04:53

标签: ios datamodel

我对编程很陌生。我正在创建一个非常简单的iOS测验应用程序,仅供练习。以下是我到目前为止所做的工作:

  • 我使用“单一视图”模板创建了Xcode项目。因此,我已经拥有appDelegate文件,View Controller和View(XIB文件)。

    • 我的视图只有四个控制器:2个UILabel和2个UIButtons。每个按钮都与一个标签配对。我拥有这4个控制器设置的所有连接。当用户点击标有“获取状态”的按钮时,需要使用名为stateArray的NSMutableArray中的状态名称填充其标签。当用户点击标有“获取资金”的按钮时,需要在其标签中填写状态资本的标签。

    • 我创建了一个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 个答案:

答案 0 :(得分:0)

您需要在自己的ViewController上创建数据模型的实例。

@implementation onMyOwnViewController {
  dataModel *data;
}

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

然后在你的方法调用中

- (IBAction)stateButton:(id)sender
{

   NSString *myState = data.stateArray[0];
   ...
}