添加到以前保存的NSUserDefaults [英] Adding to a Previously saved NSUserDefaults
问题描述
NSString
( passedValue1
)。 代表委托代码:
LevelCompleteLevel1
.h
#importViewController.h
@interface LevelCompleteLevel1:UIViewController {
IBOutlet UILabel * label;
ViewController * secondviewData;
}
@property(nonatomic,retain)ViewController * secondviewData;
.m
ViewController * second = [[ViewController alloc] initWithNibName:nil bundle:nil];
self.secondviewData = second;
secondviewData.passedValue1 = label.text;
[self presentModalViewController:second animated:YES];
在 .m
中,我发送从当前 viewcontroller
中的标签的值到另一个视图控制器
,我发送的值称为 passValue1
一旦我发送了我需要显示并保存在我的 ViewController
ViewController
.h
@interface ViewController:UIViewController {
IBOutlet UILabel * label;
NSString * passedValue1;
}
@property(nonatomic,retain)NSString * passedValue1;
@end
.m p>
首先我... @synthesize passedValue1;
然后,我添加代码以接收我的 viewDidLoad
中的值,并在$ code> UILabel
$ b
- (void)viewDidLoad
{
[super viewDidLoad];
//加载视图后,执行任何其他设置,通常从nib
NSString * key = @labelKey;
//加载视图后,进行任何其他设置,通常从nib
if(passedValue1){
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:key];
if(object!= nil){
NSUserDefaults * defults = [NSUserDefaults standardUserDefaults];
[defults setObject:passedValue1 forKey:key];
[defults synchronize];
}
else {
NSUserDefaults * defults = [NSUserDefaults standardUserDefaults];
NSInteger readScore = [[[NSUserDefaults standardUserDefaults] objectForKey:key] integerValue];
NSInteger newValue = readScore + [passedValue1 integerValue];
[defults setObject:[NSString stringWithFormat:@%d,newValue] forKey:key];
[defults synchronize];
}
}
label.text = [[NSUserDefaults standardUserDefaults] objectForKey:key];
}
一旦我显示值,然后使用 NSUserDefault
将其保存到标签中。但是,一旦我重播了我的游戏并获得了另一个分数值,我想将新$ code> passedValue1 值添加到当前保存的值...
例如:
说我玩我的水平,我的得分值为10.值为然后保存,我重播我的水平。然后我想把保存的值加到我刚刚得分的值上。所以说我得到的第二个值是20.我会喜欢我的代码添加在一起,给我一个值30。
任何人都可以帮助,因为我正在使用的代码不正确地执行我想要做的功能,它是添加上一个和当前传递的值。
提前感谢
编辑
Iam使用此代码:
- (void)viewDidLoad
{
[super viewDidLoad];
//加载视图后,执行任何其他设置,通常从nib
NSString * key = @labelKey;
//加载视图后,进行任何其他设置,通常从nib
if(passedValue1){
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:key];
if(object!= nil){
NSUserDefaults * defults = [NSUserDefaults standardUserDefaults];
[defults setObject:passedValue1 forKey:key];
[defults synchronize];
}
else {
NSUserDefaults * defults = [NSUserDefaults standardUserDefaults];
NSInteger readScore = [[[NSUserDefaults standardUserDefaults] objectForKey:key] integerValue];
NSInteger newValue = readScore + [passedValue1 integerValue];
[defults setValue:[NSString stringWithFormat:@%d,newValue] forKey:key];
[defults synchronize];
}
}
label.text = [[NSUserDefaults standardUserDefaults] objectForKey:key];
}
为什么这不起作用,标签的显示值是最初传递的值?
一次尝试这一个,
code> NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@10forKey:@old value];
[默认同步];
int k = [[defaults objectForKey:@old value] intValue] + newValue;
I am making a game for iOS which in includes a scoring system in each level. Here I have some code that gets an NSString
(passedValue1
) by using a delegate.
Heres the code for the delegate:
LevelCompleteLevel1
.h
#import "ViewController.h"
@interface LevelCompleteLevel1 : UIViewController{
IBOutlet UILabel *label;
ViewController *secondviewData;
}
@property (nonatomic, retain)ViewController*secondviewData;
.m
ViewController *second = [[ViewController alloc] initWithNibName:nil bundle:nil];
self.secondviewData = second;
secondviewData.passedValue1 = label.text;
[self presentModalViewController:second animated:YES];
In the .m
I send the a value from a label in the current viewcontroller
to another view controller
the value I send is called passedValue1
Once I have sent the value I need to display and save in my ViewController
ViewController
.h
@interface ViewController : UIViewController{
IBOutlet UILabel *label;
NSString *passedValue1;
}
@property (nonatomic, retain)NSString *passedValue1;
@end
.m
Firstly I ... @synthesize passedValue1;
Then i add the code to receive the value in my viewDidLoad
and display my value in a UILabel
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib
NSString *key=@"labelKey";
// Do any additional setup after loading the view, typically from a nib
if(passedValue1){
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:key];
if(object != nil){
NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
[defults setObject:passedValue1 forKey:key];
[defults synchronize];
}
else{
NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
NSInteger readScore=[[[NSUserDefaults standardUserDefaults] objectForKey:key] integerValue];
NSInteger newValue=readScore+[passedValue1 integerValue];
[defults setObject:[NSString stringWithFormat:@"%d",newValue] forKey:key];
[defults synchronize];
}
}
label.text = [[NSUserDefaults standardUserDefaults]objectForKey:key];
}
Once I have displayed the value I then save it into a label using a NSUserDefault
. However, once I have replayed my game and have another score value I would like to add the new passedValue1
value to the currently saved value...
For example:
say I play my level and I get the score value of 10. The value is then saved and I replay my level. I would then like to take the saved value and add it to the value i just scored. So thats say the second value I have scored is 20. I would then like my code to add them together and give me a value of 30.
can anyone help because the code I'm using does not correctly do the function that I want to do which is add the previous and the currently passed value.
Thanks in advance.
edit Iam using this code:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib
NSString *key=@"labelKey";
// Do any additional setup after loading the view, typically from a nib
if(passedValue1){
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:key];
if(object != nil){
NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
[defults setObject:passedValue1 forKey:key];
[defults synchronize];
}
else{
NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
NSInteger readScore=[[[NSUserDefaults standardUserDefaults] objectForKey:key] integerValue];
NSInteger newValue=readScore+[passedValue1 integerValue];
[defults setValue:[NSString stringWithFormat:@"%d",newValue] forKey:key];
[defults synchronize];
}
}
label.text = [[NSUserDefaults standardUserDefaults]objectForKey:key];
}
Why is this not working , the displayed value of the label is the originally passedValue1?
once try this one ,
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:@"10" forKey:@"old value"];
[defaults synchronize];
int k=[[defaults objectForKey:@"old value"] intValue]+newValue;
这篇关于添加到以前保存的NSUserDefaults的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!