将多个整数保存到数组并在标签中显示总值
Posted
技术标签:
【中文标题】将多个整数保存到数组并在标签中显示总值【英文标题】:Save several ints to array and show total value in a label 【发布时间】:2012-04-19 14:49:00 【问题描述】:我喜欢做什么:
用户在UITextField
中输入10 并点击UIButton
。
UILabel
显示 10,UITextField
变为空白。
用户在UITextField
中输入5,然后点击UIButton
。
UILable
显示 15,UITextField
再次变为空白。
使用以下代码,我可以将输入的数字保存并显示在标签中,但是如何告诉数组添加并显示总数,而不仅仅是我输入的第一个数字?
h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (nonatomic, strong) IBOutlet UILabel *label;
@property (nonatomic, strong) IBOutlet UITextField *field;
@property (nonatomic, strong) NSString *dataFilePath;
@property (nonatomic, strong) NSString *docsDir;
@property (nonatomic, strong) NSArray *dirPaths;
@property (nonatomic, strong) NSFileManager *fileMgr;
@property (nonatomic, strong) NSMutableArray *array;
- (IBAction)saveNumber:(id)sender;
@end
米
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize label, field, dataFilePath, docsDir, fileMgr, dirPaths, array;
- (void)viewDidLoad
[super viewDidLoad];
fileMgr = [NSFileManager defaultManager];
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
dataFilePath = [[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@"data.archive"]];
if ([fileMgr fileExistsAtPath:dataFilePath])
array = [NSKeyedUnarchiver unarchiveObjectWithFile:dataFilePath];
self.label.text = [array objectAtIndex:0];
else
array = [[NSMutableArray alloc] init];
- (IBAction)saveNumber:(id)sender
[array addObject:self.field.text];
[NSKeyedArchiver archiveRootObject:array toFile:dataFilePath];
[field setText:@""];
[label setText:[array objectAtIndex:0]];
【问题讨论】:
【参考方案1】:您需要遍历所有值并将它们添加到运行总计中。看看这个:-
- (IBAction)saveNumber:(id)sender
[array addObject:self.field.text];
[NSKeyedArchiver archiveRootObject:array toFile:dataFilePath];
[field setText:@""];
// Create an enumerator from the array to easily iterate
NSEnumerator *e = [array objectEnumerator];
// Create a running total and temp string
int total = 0;
NSString stringNumber;
// Enumerate through all elements of the array
while (stringNumber = [e nextObject])
// Add current number to the running total
total += [stringNumber intValue];
// Now set the label to the total of all numbers
[label setText:[NSString stringWithFormat:@"%d",total];
为了便于阅读,我已对代码进行了注释。
【讨论】:
【参考方案2】:遍历数组,使用[string intValue]
将所有值作为数字获取,并将它们汇总到另一个变量中。然后使用[NSString stringWithFormat: @"%d"]
之类的格式化字符串将计算值添加到标签中。
【讨论】:
我第一次这样做。请帮忙,这是我得到的: for (int i = 0; i 差不多就是这样。只在循环之前声明 sum。并在循环内使用sum += [myString intValue]
。 setText 可以在循环后移出。 (真的,就是这样。与 liams 示例相比,它的代码更少。你不需要自定义枚举器)
对于初学者来说更容易理解,再次感谢您的帮助。以上是关于将多个整数保存到数组并在标签中显示总值的主要内容,如果未能解决你的问题,请参考以下文章