将多个整数保存到数组并在标签中显示总值

Posted

技术标签:

【中文标题】将多个整数保存到数组并在标签中显示总值【英文标题】:Save several ints to array and show total value in a label 【发布时间】:2012-04-19 14:49:00 【问题描述】:

我喜欢做什么:

用户在UITextField 中输入10 并点击UIButtonUILabel 显示 10,UITextField 变为空白。 用户在UITextField 中输入5,然后点击UIButtonUILable 显示 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 示例相比,它的代码更少。你不需要自定义枚举器) 对于初学者来说更容易理解,再次感谢您的帮助。

以上是关于将多个整数保存到数组并在标签中显示总值的主要内容,如果未能解决你的问题,请参考以下文章

如何转换保存在db中的二进制图像数据并在浏览器中显示

有没有可能将输出整数保存到数组中?

如何保存整个整数数组?

如何一次将多行保存到多个数据库表

Qt - 如何将 QVector<QString> 保存并加载到多个标签中?

如何能够将数据保存在列表中并在 recyclerview 中显示