0

uitextフィールドのiboutletコレクションがあり、データをロードしたいのですが、loadDataが機能せず、saveDataのみが機能します。

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

同じキーで異なるオブジェクトを保存しています。したがって、オブジェクトごとに異なるキーを使用します

saveData

-(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"には、最後に保存した値である値が1つだけあります。データをロードすると、テキストフィールドごとに同じデータがロードされます。あなたの論理は間違っているようです。毎回savedStringに別の名前を設定し、新しい名前から値を取得してみてください。

別の提案として、あるすべてのテキストフィールドに対して実行する前に、1つのテキストフィールドに対してsaveDataとloadDataを実行してみてください。

于 2013-02-01T03:08:58.477 に答える