Hallo, ich habe ein Problem mit der Datenspeicherung auf dem iPad.
Wenn ich meine App mit xCode starte und ein neues NSManagedObject anlege kann ich dort meine Daten eintragen.
Wenn ich die App übers iPad beende und wieder starte ist das Object noch bestückt, wenn ich sie jedoch nochmals über xCode starte oder das iPad reboote, existiert zwar noch das Object aber die eingetragenen Daten sind weg.
ArtikelOverviewController.m
Alles anzeigen
Alles anzeigen
DetailedViewController.m
Alles anzeigen
Alles anzeigen
PickerViewController.m
Alles anzeigen
Vielleicht kann mir da jemand helfen, ich find den Fehler nicht.
Wenn ich meine App mit xCode starte und ein neues NSManagedObject anlege kann ich dort meine Daten eintragen.
Wenn ich die App übers iPad beende und wieder starte ist das Object noch bestückt, wenn ich sie jedoch nochmals über xCode starte oder das iPad reboote, existiert zwar noch das Object aber die eingetragenen Daten sind weg.
ArtikelOverviewController.m
Quellcode
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSManagedObject *artikel = [fetchedResultsController objectAtIndexPath:indexPath];
- DetailedViewController *detailController = [[DetailedViewController alloc]initWithNibName:nibName bundle:nil];
- detailController.artikel = artikel;
- [self.navigationController pushViewController:detailController animated:YES];
- [detailController release];
- }
Quellcode
- - (NSFetchedResultsController *)fetchedResultsController
- {
- if(fetchedResultsController != nil) return fetchedResultsController;
- NSFetchRequest *fetchedRequest = [NSFetchRequest new];
- NSEntityDescription *artikelDescription = [NSEntityDescription entityForName:@"Artikel" inManagedObjectContext:managedObjectContext];
- [fetchedRequest setEntity:artikelDescription];
- NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"datum" ascending:NO];
- NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor,nil];
- [fetchedRequest setSortDescriptors:sortDescriptors];
- fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchedRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Overview"];
- fetchedResultsController.delegate = self;
- [fetchedRequest release];
- [sortDescriptor release];
- [sortDescriptors release];
- return fetchedResultsController;
- }
Quellcode
- - (IBAction)neuerArtikel
- {
- NSEntityDescription *artikelDescription = [[fetchedResultsController fetchRequest] entity];
- NSManagedObject *newArtikel = [NSEntityDescription insertNewObjectForEntityForName:[artikelDescription name] inManagedObjectContext:managedObjectContext];
- [newArtikel setValue:NSLocalizedString(@"neuerArtikel",nil) forKey:@"titel"];
- [newArtikel setValue:[NSDate date] forKey:@"datum"];
- [newArtikel setValue:[[NSUserDefaults standardUserDefaults] stringForKey:@"autor"] forKey:@"autor"];
- NSError *error;
- if(![managedObjectContext save:&error])
- {
- NSLog(@"Fehler beim Anlegen eines neuen Artikels");
- }
- DetailedViewController *detailController = [[DetailedViewController alloc]initWithNibName:nibName bundle:nil];
- detailController.artikel = newArtikel;
- [self.navigationController pushViewController:detailController animated:YES];
- [detailController release];
- }
DetailedViewController.m
Quellcode
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- UITableViewCell *cell = nil;
- if(indexPath.section == kAngebotSection)
- {
- static NSString *TextCellIdentifier = @"TextCell";
- cell = [tableView dequeueReusableCellWithIdentifier:TextCellIdentifier];
- if (cell == nil)
- {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TextCellIdentifier] autorelease];
- }
- cell.textLabel.text = NSLocalizedString(@"Angebot",nil);
- cell.detailTextLabel.text = [artikel valueForKey:@"angebot"];
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- }
- //...
- return cell;
- }
Quellcode
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- if(indexPath.section == kAngebotSection)
- {
- pickerViewController.artikel = artikel;
- pickerViewController.title = NSLocalizedString(@"Angebot",nil);
- pickerViewController.key = @"angebot";
- [self.navigationController pushViewController:pickerViewController animated:YES];
- }
- //...
- }
PickerViewController.m
Quellcode
- -(void)viewWillAppear:(BOOL)animated
- {
- UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(fertig)];
- self.navigationItem.rightBarButtonItem = doneButton;
- [doneButton release];
- arrView = [[NSMutableArray alloc] init];
- if([key isEqualToString:@"angebot"])
- {
- [arrView addObject:@"Unterkunft"];
- [arrView addObject:@"Aktivität"];
- [arrView addObject:@"Gutschein"];
- }
- //...
- [pickerView setDataSource:self];
- [pickerView setDelegate:self];
- }
Vielleicht kann mir da jemand helfen, ich find den Fehler nicht.
