Я создал простое приложение, состоящее из 2 UILabels и кнопки, чтобы добавить значение обоих из них вместе. Я использую NSUserdefaults
, чтобы сохранить значения меток при выходе из приложения/ударе по кнопке «Назад»/«Приложение» и т. Д. Я вызываю эту функцию сохранения при выборе кнопки, которая добавляет оба значения вместе.Сохраняется только одно значение UILabel
Проблема, с которой я столкнулась, заключается в том, что только 1 из значений UILabel сохраняется, а другой нет. Я пробовал всевозможные настройки, но не могу разобраться.
Вот мой час код файла:
#import <UIKit/UIKit.h>
int dcounter;
int dtotaler;
int enteramount;
@interface durood : UIViewController {
IBOutlet UILabel *dcount;
IBOutlet UILabel *dtotal;
IBOutlet UITextField *numberTextField;
}
-(IBAction)addtotal1;
Вот код из моего м файла:
-(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;' to 'extern int dcounter; 'и тому подобное. или вы должны переместить затем в .m файл –
Я не вставлял весь мой m-файл, -void saveDcount содержит код для сохранения Dtotal также – Mustafa
Используйте отладчик или добавьте инструкции NSLog, чтобы распечатать все переменные, которые вы устанавливаете в 'addTotal1 '. Все эти значения отражают то, что вы ожидаете? –