xcode NSUSERDEFAULT未保存
1.无论我做什么,saveButton方法都不会保存,对于拒绝,它仍然返回0 2.请帮助我将saveButton修复为userdefaults方法 3.我尝试了多种方法,但其值仍然不变xcode NSUSERDEFAULT未保存,xcode,nsuserdefaults,Xcode,Nsuserdefaults,1.无论我做什么,saveButton方法都不会保存,对于拒绝,它仍然返回0 2.请帮助我将saveButton修复为userdefaults方法 3.我尝试了多种方法,但其值仍然不变 #import "CCViewController.h" @interface CCViewController () @end @implementation CCViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(
#import "CCViewController.h"
@interface CCViewController ()
@end
@implementation CCViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// [NSUserDefaults integerForKey:@"REJECTIONS"];
self.rejectLabel.text=REJECTIONS;
self.acceptedLabel.text=ACCEPTED;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.customInputTextField resignFirstResponder];
}
- (IBAction)resetButton:(UIButton *)sender {
self.rejectLabel.text=@"0";
self.acceptedLabel.text=@"0";
}
- (IBAction)rejectButton:(UIButton *)sender {
int current=stringToInt(self.rejectLabel.text);
int test=stringToInt(self.customInputTextField.text);
if (test>0) {
self.rejectLabel.text=self.customInputTextField.text;
self.customInputTextField.text=nil;
} else {
current++;
self.rejectLabel.text=intToString(current);
}
if (stringToInt(self.rejectLabel.text)==3000) {
UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Achievement Message" message:@"You have reached 3000 rejections!" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles: nil];
[alertView show];
}
}
NSInteger stringToInt(NSString *string) {
return [string integerValue];
}
NSString* intToString(NSInteger integer) {
return [NSString stringWithFormat:@"%d", integer];
}
- (IBAction)acceptedButton:(UIButton *)sender {
int current=stringToInt(self.acceptedLabel.text);
int test=stringToInt(self.customInputTextField.text);
if (test>0) {
self.acceptedLabel.text=self.customInputTextField.text;
self.customInputTextField.text=nil;
} else {
current++;
self.acceptedLabel.text=intToString(current);
}
NSLog(@"after is: %i", current);
}
- (IBAction)unrejectButton:(UIButton *)sender {
int current=stringToInt(self.rejectLabel.text);
current--;
if (current>=0) {
self.rejectLabel.text=intToString(current);
} else {UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Error Message" message:@"You can not have negative rejections!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];}
NSLog(@"after is: %i", current);
}
- (IBAction)saveButton:(UIButton *)sender {
NSString *rejected=self.rejectLabel.text;
int reject=intToString(self.rejectLabel.text);
NSString *accepted=self.acceptedLabel.text;
NSUserDefaults *rejectTry=[NSUserDefaults standardUserDefaults];
[rejectTry setObject:self.rejectLabel.text forKey:REJECTIONS];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:self.rejectLabel.text forKey:REJECTIONS];
[[NSUserDefaults standardUserDefaults] setValue:@"reject" forKey:REJECTIONS];
[[NSUserDefaults standardUserDefaults] setValue:self.rejectLabel.text forKey:REJECTIONS];
[[NSUserDefaults standardUserDefaults] setObject:@"accepted" forKey:ACCEPTED];
}
NSLog(@"test save %@ & %@ & %@ & %@", REJECTIONS, ACCEPTED, self.rejectLabel.text, self.acceptedLabel.text);
[rejectTry synchronize];
NSLog(@"test save %@ & %@ & %@ & %@, &a %i", REJECTIONS, ACCEPTED, self.rejectLabel.text, self.acceptedLabel.text, picker_value);
}
- (IBAction)loadButton:(id)sender {
self.rejectLabel.text=REJECTIONS;
self.acceptedLabel.text=ACCEPTED;
}
@end
仍然没有保存到密钥拒绝和接受
NSUserDefaults*prefs=[NSUserDefaults standardUserDefaults];
[prefs setObject:self.rejectLabel.text-forKey:REJECTIONS]
NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults];
[默认设置setObject:self.acceptedLabel.text-forKey:ACCEPTED]
[[NSUserDefaults standardUserDefaults]同步];
NSLog@test保存%@&%@&%@&%@&%@指针%@%@,拒绝,接受,self.rejectLabel.text,self.acceptedLabel.text,默认值,首选项
看起来你把指针弄乱了。您有两个对同一个userDefaults实例的引用,但是在写入每个实例时,您期望得到不同的结果。在这里,让我们浏览一下您的代码
NSString *rejected=self.rejectLabel.text;
int reject=intToString(self.rejectLabel.text);
NSString *accepted=self.acceptedLabel.text;
NSUserDefaults *rejectTry=[NSUserDefaults standardUserDefaults];
我们到此为止。standardUserDefaults是一个单例对象。调用此方法时,您没有创建用户默认值对象。然后继续设置一个值
[rejectTry setObject:self.rejectLabel.text forKey:REJECTIONS];
这个很好用
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:self.rejectLabel.text forKey:REJECTIONS];
现在,您已写入了以前的值
[[NSUserDefaults standardUserDefaults] setValue:@"reject" forKey:REJECTIONS];
你又这样做了
[[NSUserDefaults standardUserDefaults] setValue:self.rejectLabel.text forKey:REJECTIONS];
[[NSUserDefaults standardUserDefaults] setObject:@"accepted" forKey:ACCEPTED];
结论
您应该做的是创建一个像这样的局部变量NSUserDefaults*defaults=[NSUserDefaults standardUserDefaults];然后在你所有的写作中使用这个。然后,您将看到您是如何使用键拒绝多次覆盖该值的对不起,现在检查我的答案