我正在制作一款可以计算某些东西的应用。
我需要它能够从第一个文本字段中获取输入,例如4 + 4并将结果保存在变量中。
在第二个文本字段中,例如可能有8 + 8,其结果也将保存到变量中(可能相同)。
第三行文本字段可以产生更多数字等等。
最后会有一个“计算”按钮。这将取得第一,第二,第三等文本字段的结果,并将所有这些结果一起计算并输出最终结果。
计算当然比这更先进,但我只需要基本/简单的想法如何做到这一点。
现在不需要将数据保存到文件中,它应该只在应用程序中,而其他文本字段正在填充。
对于0x8badf00d: 报头中。
@interface UnitConverterViewController : UIViewController {
NSMutableArray *calculationsArray;
UITextField *m1Text;
UITextField *m2Text;
}
@property (nonatomic, retain) IBOutlet UITextField *m1Text;
@property (nonatomic, retain) IBOutlet UITextField *m2Text;
@property (nonatomic, retain) IBOutlet NSMutableArray *calculationsArray;
@end
实现:
@implementation UnitConverterViewController
@synthesize m1Text, m2Text, calculationsArray;
@synthesize resultTotal = _resultTotal;
-(id)init {
if(self = [super init]){
calculationsArray = [[NSMutableArray alloc] init];
}
}
- (void)compute{
NSString* sumString = [NSString stringWithFormat:@"%d",[m1Text.text intValue]+[m2Text.text intValue]];
[calculationsArray addObject:sumString];
}
-(IBAction)calculate{
int total=0;
for(NSString* sumStr in calculationsArray){
total = total+[sumStr intValue];
}
NSLog(@"Total: %d", total);
[calculationsArray release], calculationsArray = nil;
}
我一定是做错了,我知道我需要一种输出方法,一个标签等。但是现在我需要知道我到目前为止所做的事情是否正确,以及输出它的最佳方式是什么。
答案 0 :(得分:0)
将结果保存到数组。假设你有NSMutableArray * computationArray; // iVar
//initialize calculationsArray in init method
-(id)init
{
if(self = [super init])
{
calculationsArray = [[NSMutableArray alloc] init];
}
}
- (void)compute
{
NSString* sumString = [NSString stringWithFormat:@"%d",[textField1.text intValue]+[textField2.text intValue]);
[calculationsArray addObject:sumString];
}
- (IBAction)calculate
{
int total=0;
for(NSString* sumStr in calculationsArray)
{
total = total+[sumStr intValue];
}
NSLog(@"Total: %d",total);
[calculationsArray release],calculationsArray = nil;
}
答案 1 :(得分:0)
您应该声明变量以将结果存储在头文件中,这些变量不能从.m文件中的任何位置访问,对于您的文本字段也是如此。
例如:
Calculator.h
@interface Calculator: SuperclassName{
UITextField *_fldOne;
UITextField *_fldTwo;
UITextField *_fldThree;
UITextField *_fldFour;
int resultOne;
int resultTwo;
int _resultTotal;
}
@property(nonatomic, readonly) int resultTotal;
- (void) calculate;
@end
Calculator.m
@implementation Calculator
@synthesize resultTotal = _resultTotal;
- (void) calculate{
resultOne = [_fldOne.text intValue] * [_fldTwo.text intValue];
resultTwo = [_fldThree.text intValue] / [_fldFour.text intValue];
totalResult = resultOne + resultTwo;
}
@end
在这个示例中,resultOne和Two以及所有文本字段在整个类中都可用,将totalResult设置为readonly属性并合成以自动创建getter(由于同步而返回存储在_totalResult中的值) totalResult = _totalResult)因为它可以从课外读取。
只要一切都发生在一个屏幕上就应该绰绰有余,但当然你可以制作一个NSDictionary或NSArray,但这里似乎没必要。
希望这有帮助