在变量中存储和打开数据

时间:2011-09-07 19:04:47

标签: iphone objective-c

我正在制作一款可以计算某些东西的应用。

我需要它能够从第一个文本字段中获取输入,例如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;
}

我一定是做错了,我知道我需要一种输出方法,一个标签等。但是现在我需要知道我到目前为止所做的事情是否正确,以及输出它的最佳方式是什么。

2 个答案:

答案 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,但这里似乎没必要。

希望这有帮助