我是Objective-C和MVC的新手。我一直在跟随Paul Haggerty的课程和讲座,并学到了很多东西。我正在进入我的编程阶段,我实际上能够坐下来编写工作应用程序,而不是仅仅阅读有关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]];
}
如您所见,它设置了一个数组,然后当用户点击屏幕上的按钮时,它会显示下一个名称和该名称中的字母数。我想要做的是在我的模型中创建我的数组然后通过控制器访问它(这是你应该做的正确吗?)
我的方法是创建一个模型类(我称之为Brain)。我将大脑导入控制器并在大脑中创建了一个NSArray属性并合成它。但是我在控制器中访问它时遇到了困难。
此外,我知道我现在完成它的方式是错误的,因为我基本上每次用户点击按钮时都会重新创建数组。
有人可以指导我吗? (我正在使用ARC,顺便说一句。)
以下是我创建“大脑”课程的方法:
#import <Foundation/Foundation.h>
@interface Brain : NSObject
@property (nonatomic, strong) NSMutableArray *myNamesArray;
@end
#import "Brain.h"
@implementation Brain
@synthesize myNamesArray = _myNamesArray;
@end
答案 0 :(得分:1)
我会跟踪索引。将其定义为类标题中的属性。此外,您可能不希望继续创建新阵列。
@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,请务必在dealloc方法中释放namesArray。
然后使用它来设置文本字符串。
- (IBAction)buttonClicked {
self.index++;
self.myDisplay.text = [self.namesArray objectAtIndex:index%[namesArray count]];
}