내 응용 프로그램에는 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