save la valeur de l'option de vérification dans nsuserdefaults, puis les récupérer

Salut, je suis en train d'essayer de sauvegarder l'état de la rangée cochée dans nsuserdefaults.Some comment je reçois erreur: setObject non déclaré.

mon code est comme:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; if(newRow != oldRow) { newCell.accessoryType = UITableViewCellAccessoryCheckmark; UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath]; oldCell.accessoryType = UITableViewCellAccessoryNone; lastIndexPath = indexPath; } NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; prefs = [setObject:lastIndexPath forKey:@"lastIndexPath"]; } 

aussi j'essaye d'aller chercher l'état de ligne dans la méthode de viewdidload (devrais-je aller chercher ici? dans la vue a chargé) le code .my est comme:

 - (void)viewDidLoad { menuList=[[NSMutableArray alloc] initWithObjects: [NSArray arrayWithObjects:@"LOCATION1",nil], [NSArray arrayWithObjects:@"LOCATION2",nil], [NSArray arrayWithObjects:@"LOCATION3",nil], [NSArray arrayWithObjects:@"LOCATION4",nil], [NSArray arrayWithObjects:@"LOCATION5",nil], [NSArray arrayWithObjects:@"LOCATION6",nil], [NSArray arrayWithObjects:@"LOCATION7",nil], nil]; [self.navigationController setNavigationBarHidden:NO]; self.navigationController.navigationBar.tintColor=[UIColor blackColor]; self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent; self.title=@"Location Selection"; [table reloadData]; NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; if([[prefs objectForKey:@"lastIndexPath"] compare: indexPath]== NSOrderedSame){ cell.AccessoryType = UITableViewCellAccessoryCheckMark; } [super viewDidLoad]; } 

et get des erreurs: indexPath Undeclared et cellule non déclarée.

Je comprends pourquoi ces erreurs viennent coz les deux (path d'index et cellule) ne sont pas dans la scope, puis où placer ce code (nsuserdefaults données resortingving code). S'il vous plaît guider mon. Merci!

Essayez de replace ceci:

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; prefs = [setObject:lastIndexPath forKey:@"lastIndexPath"]; 

Avec ça:

 [[NSUserDefaults standardUserDefaults] setObject:lastIndexPath forKey:@"lastIndexPath"]; 

Votre erreur est due au fait que vous appelez setObject: forKey: sans spécifier que votre object prefs l'appelle. Le compilateur ne l'identifie donc pas comme un message valide. Vous essayez également d'évaluer la sortie des messages sur votre object prefs, ce qui n'est pas correct.

Cela dit, je suis sûr que vous ne pouvez pas stocker un NSIndexPath à l'intérieur d'une plist directement, vous devrez soit stocker en tant que NSNumber, NSSsortingng ou NSData.

Cela ressemblerait à ceci:

 [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:lastIndexPath.row] forKey:@"lastIndexPath"];