0

我有一个 uitext 字段 iboutlet 集合,我想加载数据,但 loadData 不起作用,只有 saveData。

保存数据:

-(IBAction)saveData:(id)sender{
for (UITextField*longitud in guardarDatos){
    NSString*saveString=longitud.text;
    NSUserDefaults*defauls = [NSUserDefaults standardUserDefaults];
    [defauls setObject:saveString forKey:@"savedString"];
    [defauls synchronize];
    NSLog(@"%@",saveString);
}
}

加载数据:

-(IBAction)loadData:(id)sender{
for (UITextField*longitud in guardarDatos){
    NSUserDefaults*defauls = [NSUserDefaults standardUserDefaults];
    NSString*loadString=[defauls objectForKey:@"savedString"];
    [longitud setText:loadString];
    NSLog(@"%@",longitud);
}
}
4

2 回答 2

1

您正在使用相同的密钥保存不同的对象。所以对不同的对象使用不同的键

保存数据

-(IBAction)saveData:(id)sender{
UITextField*longitud = nil;
for (int i = 0; i < guardarDatos.count; i++){
    longitud  = [guardarDatos objectAtIndex:i];
    NSString*saveString=longitud.text;
    NSUserDefaults*defauls = [NSUserDefaults standardUserDefaults];
    [defauls setObject:saveString forKey:[NSString stringWithFormat:@"savedString%d",i]];
    [defauls synchronize];
    NSLog(@"%@",saveString);
}
}

加载数据:

-(IBAction)loadData:(id)sender{
UITextField*longitud = nil;
for (int i = 0; i < guardarDatos.count; i++){
    longitud  = [guardarDatos objectAtIndex:i];
    NSUserDefaults*defauls = [NSUserDefaults standardUserDefaults];
    NSString*loadString=[defauls objectForKey:[NSString stringWithFormat:@"savedString%d",i]];
    [longitud setText:loadString];
    NSLog(@"%@",longitud);
}
}
于 2013-02-01T03:26:31.167 回答
0

即使您正确保存,在 saveData 结束时,objectForKey:@"savedString" 只有一个值,即您保存的最后一个值。当您加载数据时,它将为每个文本字段加载相同的数据。你的逻辑似乎是错误的。每次为 savedString 设置一个不同的名称,并尝试从新名称中获取值。

另一个建议是,在为您拥有的所有文本字段运行之前,尝试为一个文本字段运行 saveData 和 loadData 。

于 2013-02-01T03:08:58.477 回答