2013-04-07 70 views
0

我创建了一个简单的应用程序,它由2个UILabels和一个将它们的值添加在一起的按钮组成。我正在使用NSUserdefaults来保存退出应用程序时的标签值/点击后退按钮/应用程序崩溃等。我选择将两个值相加的按钮时调用此保存功能。只保存一个UILabel值

我遇到的问题是只有一个UILabel值正在保存另一个不是。我尝试了各种调整,但无法达到底部。

这里是我的.h文件代码:

#import <UIKit/UIKit.h> 

int dcounter; 
int dtotaler; 
int enteramount; 

@interface durood : UIViewController { 

    IBOutlet UILabel *dcount; 
    IBOutlet UILabel *dtotal; 
    IBOutlet UITextField *numberTextField; 

} 

-(IBAction)addtotal1; 

这里是我的M档代码:

-(IBAction)addtotal1;{ 

    float x = ([dcount.text floatValue]); 
    float y = ([dtotal.text floatValue]); 
    [dtotal setText:[NSString stringWithFormat:@"%g", x + y]]; 
    dcounter=0; 
    dcount.text = [NSString stringWithFormat:@"%i",dcounter]; 
    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%i",dtotaler] forKey:@"saveDtotal"]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
    [userDefaults synchronize]; 

-(void)saveDcount 
{ 
    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dtotaler] forKey:@"saveDtotal"]; 
    [userDefaults synchronize]; 

} 

- (void)viewDidLoad 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDcount) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDcount) name:UIApplicationWillTerminateNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDtotal) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDtotal) name:UIApplicationWillTerminateNotification object:nil]; 



    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    NSString *dcountString= [userDefaults objectForKey:@"saveDcount"]; 
    NSLog(@"Your Dcount: %@",dcount); 
    NSString *dtotalString= [userDefaults objectForKey:@"saveDtotal"]; 
    NSLog(@"Your Dtotal: %@",dtotal); 

    //checking if data in user defaults is not empty 
    if(dcountString.length>0) 
    { 
     dcounter=[dcountString intValue]; 
     dcount.text = [NSString stringWithFormat:@"%d",dcounter]; 

    } 
    else 
    { 
     //for first time 
     dcounter=0; 
     [email protected]"0"; 
    } 

    if(dtotalString.length>0) 
    { 
     dtotaler=[dtotalString intValue]; 
     dtotal.text = [NSString stringWithFormat:@"%d",dtotaler]; 
    } 
    else 
    { 
     //for first time 
     dtotaler=0; 
     [email protected]"0"; 
    } 
} 

这是不节约的UILabel /字符串为 'DTOTAL'。

任何帮助将不胜感激。谢谢。

+1

你的'saveDtotal'方法在哪里?如果你的.h文件被多个.m文件包含,你会得到编译错误。你必须把'int dcounter;'放到'extern int dcounter;'等等。或者你应该移动到.m文件 – 2013-04-07 01:07:01

+0

我还没有粘贴我的整个m文件,-void saveDcount包括保存Dtotal的代码也 – Mustafa 2013-04-07 01:07:52

+0

使用调试器或添加NSLog语句来打印出您在'addTotal1'中设置的所有变量'。所有这些价值观是否反映了你的期望? – 2013-04-07 01:09:06

回答

0

我找到了解决方案。

-(IBAction)addtotal1;{ 

float x = ([dcount.text floatValue]); 
float y = ([dtotal.text floatValue]); 
dtotaler = x + y; 
dtotal.text = [NSString stringWithFormat:@"%d",dtotaler]; 
dcounter=0; 
dcount.text = [NSString stringWithFormat:@"%i",dcounter]; 
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:[NSString stringWithFormat:@"%d",dtotaler] forKey:@"saveDtotal"]; 
[userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
[userDefaults synchronize]; 

感谢大家的意见。