В моем приложении у меня есть UITableView и 2 кнопки «Сохранить» и «Загрузить». В моем случае, когда пользователь сохраняет свой дорожку, мой UITableView добавляет новую ячейку с названием своей дорожки, а затем, когда пользователь удаляет ячейку, она будет повторно загружать свой трек. Это работает нормально, но всякий раз, когда пользователь сохраняет одну дорожку, затем пытается сохранить другую, вновь добавленная ячейка повторно загружает только один трек. Итак, в моем табличном представлении может быть 10 ячеек с именами, но всякий раз, когда вы нажимаете один, сохраняется только один трек. Поэтому мой вопрос: как я могу сохранить данные для каждой ячейки? Вот моя функция сохранения:UITableView Cell не сохраняет данные правильно?
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:NSStringFromCGPoint(ball.center) forKey:@"ballPosition"];
[userDefaults synchronize];
NSUserDefaults *block1DF = [NSUserDefaults standardUserDefaults];
[block1DF setObject:NSStringFromCGPoint(block1.center) forKey:@"block1Position"];
[block1DF synchronize];
NSUserDefaults *block2DF = [NSUserDefaults standardUserDefaults];
[block2DF setObject:NSStringFromCGPoint(block2.center) forKey:@"block2Position"];
[block2DF synchronize];
NSUserDefaults *block3DF = [NSUserDefaults standardUserDefaults];
[block3DF setObject:NSStringFromCGPoint(block3.center) forKey:@"block3Position"];
[block3DF synchronize];
NSUserDefaults *winBlockDF = [NSUserDefaults standardUserDefaults];
[winBlockDF setObject:NSStringFromCGPoint(winBlock.center) forKey:@"winBlockPosition"];
[winBlockDF synchronize];
NSString *trackName = [[alertView textFieldAtIndex:0] text];
trackTitle.text = trackName;
[trackArray addObject:[NSString stringWithFormat:trackName,[trackArray count]+1]];
[self.myTableView reloadData];
тогда мой Tableview didSelectRowAtIndexPath:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
CGPoint ballPoint = CGPointFromString([userDefaults objectForKey:@"ballPosition"]);
[ball setCenter:ballPoint];
NSUserDefaults *block1DF = [NSUserDefaults standardUserDefaults];
CGPoint block1Point = CGPointFromString([block1DF objectForKey:@"block1Position"]);
[block1 setCenter:block1Point];
NSUserDefaults *block2DF = [NSUserDefaults standardUserDefaults];
CGPoint block2Point = CGPointFromString([block2DF objectForKey:@"block2Position"]);
[block2 setCenter:block2Point];
NSUserDefaults *block3DF = [NSUserDefaults standardUserDefaults];
CGPoint block3Point = CGPointFromString([block3DF objectForKey:@"block3Position"]);
[block3 setCenter:block3Point];
NSUserDefaults *winBlockDF = [NSUserDefaults standardUserDefaults];
CGPoint winBlockPoint = CGPointFromString([winBlockDF objectForKey:@"winBlockPosition"]);
[winBlock setCenter:winBlockPoint];
У меня есть лучший вопрос, как мы можем решить вашу проблему, не видя исходный код? Пожалуйста, разместите соответствующий код, чтобы мы могли его проверить и, возможно, найти проблему;) – danypata
Сохраните приведенные фрагменты кода, а не комментарии. – WrightsCS
Этот код ужасен. 1.) Вам не нужно вызывать 'synchronize', если вам не нужны эти значения немедленно. 2.) Вам не нужно создавать новый/отдельный экземпляр «NSUserDefaults» для каждого значения, которое вы пытаетесь сохранить. Ваш код можно по существу сократить: http://pastie.org/8104985 – WrightsCS