在我的應用程序中,我有一個UITableView和2個按鈕「保存」和「加載」。在我的情況下,當用戶保存他或她的軌道時,我的UITableView會添加一個新的單元格與他們軌道的標題,然後當用戶點擊單元格時,它將重新加載他們的軌道。這工作正常,但每當用戶保存一個軌道,然後嘗試保存另一個,新添加的單元格只重新加載一個軌道。所以,我的tableview可以有10個有名字的單元格,但每當你點擊一個單元格時,只保存一個曲目。所以我的問題是,我如何保存每個單元格的數據?這裏是我的節電功能:UITableView單元格不能正確保存數據?
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