2012-09-28 107 views
0

這是class 1這裏我保存了我的字符串和變量我很確定這堂課的一切都可以。NSUserdefaults沒有打開

-(void)SaveTextBox:(NSString*)string :(NSString*)stringsave 
{ 
    NSString *savestring = string; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:savestring forKey:stringsave]; 
    [defaults synchronize]; 
} 
- (IBAction)btnSaveTeamNames:(id)sender 
{ 
[self SaveTextBox:tbTeam1.text :@"save1"]; 
[self SaveTextBox:tbTeam2.text :@"save2"]; 
[self SaveTextBox:tbTeam3.text :@"save3"]; 
[self SaveTextBox:tbTeam4.text :@"save4"]; 
[self SaveTextBox:tbTeam5.text :@"save5"]; 
[self SaveTextBox:tbTeam6.text :@"save6"]; 
[self SaveTextBox:tbTeam7.text :@"save7"]; 
[self SaveTextBox:tbTeam8.text :@"save8"]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

[defaults setObject:[NSNumber numberWithInt:TeamAmount] forKey:@"teamAmount"]; 
} 

2級

這是我嘗試加載NSUserDefaults的(也許錯就錯在這個類)

出於某種原因,標籤不得到改變當滑塊移動,我也做了一個viewdidload調用我的空無效加載與標準保存字符串的標籤,但他們也不加載。

@synthesize lblTeamOne; 
@synthesize lblTeamTwo; 
@synthesize sliderTeamOneOutlet; 
@synthesize sliderTeamTwoOutlet; 

-(void)loadTeams:(NSString*)location:(NSString*)lblname 
{ 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadstring = [defaults objectForKey:location]; 
lblname = loadstring; 
} 

-(void)sliderdisplay:(UISlider *)sliderOutlet :(NSString *)lblName 
{ 
if(0 < sliderOutlet.value && 1 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save1" :lblName]; 

} 
if(1 < sliderOutlet.value && 2 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save2" :lblName]; 

} 
if(2 < sliderOutlet.value && 3 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save3" :lblName]; 

} 
if(3 < sliderOutlet.value && 4 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save4" :lblName]; 

} 
if(4 < sliderOutlet.value && 5 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save5" :lblName]; 

} 
if(5 < sliderOutlet.value && 6 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save6" :lblName]; 

} 
if(6 < sliderOutlet.value && 7 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save7" :lblName]; 

} 
if(7 < sliderOutlet.value && 8 >= sliderOutlet.value) 
{ 
    [self loadTeams:@"save8" :lblName]; 

} 
} 
-(void)loadMaximum 
{ 

int teamAmount = [[[NSUserDefaults standardUserDefaults] objectForKey:@"teamAmount"] intValue]; 
NSNumber *yourNumber = [NSNumber numberWithInt:teamAmount]; 
float sliderMaximumDigital = [yourNumber floatValue]; 
[sliderTeamOneOutlet setMaximumValue:sliderMaximumDigital]; 
[sliderTeamTwoOutlet setMaximumValue:sliderMaximumDigital]; 
} 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self loadTeams:@"save1" :lblTeamOne.text]; 
[self loadTeams:@"save1" :lblTeamTwo.text]; 
[self loadMaximum]; 
} 
+0

有在你的代碼severl問題(當然,還有其它什麼也沒有之前申報你的方法的方式你參數 - 它可以被編譯器理解,但會讓你自己的代碼更不易讀)。您還要傳遞參數,以便通過引用傳遞它們,或者提供返回值。下面的代碼似乎只是將所有時間lblname重新分配給一個新字符串。而已。沒有涉及標籤。 – onekiloparsec

回答

1

您需要將指針傳遞給UILabel對象,因此它可以被更新:

-(void)loadTeams:(NSString*)location label:(UILabel*)label 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *loadstring = [defaults objectForKey:location]; 
    label.text = loadstring; 
} 
... 

[self loadTeams:@"save1" label:lblTeamOne]; 
+0

這似乎很重要。 – harry

+0

@harry沒問題。請接受答案。 – trojanfoe

+0

只是問,但每次我問這種問題時,這似乎是一個糟糕的問題,我似乎得到了低估。 – harry