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'。
任何帮助将不胜感激。谢谢。
你的'saveDtotal'方法在哪里?如果你的.h文件被多个.m文件包含,你会得到编译错误。你必须把'int dcounter;'放到'extern int dcounter;'等等。或者你应该移动到.m文件 – 2013-04-07 01:07:01
我还没有粘贴我的整个m文件,-void saveDcount包括保存Dtotal的代码也 – Mustafa 2013-04-07 01:07:52
使用调试器或添加NSLog语句来打印出您在'addTotal1'中设置的所有变量'。所有这些价值观是否反映了你的期望? – 2013-04-07 01:09:06