Question

Hi everybody I have a problem using CoreData Persistence, my problem is, when I launch my application I manage to add some data (from a form within the app) to my DataBase and display them with using NSLog. But actually I think all these data disappear when I stop the ipad emulator and re launch it after..

So i don't really know if it comes from my code or if it's because of the emulator. I made a diagram to show you the architecture of my app and my entities:

model

model

The problem is that i'm using different viewController so i need to pass the ManagedObjectModel to each one. My form is in the newDocumentViewController, when i add somme entities i would like to access them in all the others viewController and save it to the app local storage.

Here is some code to show you a bit:

AppDelegate.m

@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
    UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

    masterViewController.managedObjectContext = self.managedObjectContext;    
    detailViewController.managedObjectContext = self.managedObjectContext;

I have those properties within each masterViewController and DetailViewController (and from DetailViewController to NewDocumenViewController) to receive the objectContext

@property (nonatomic,strong) NSManagedObjectContext *managedObjectContext;

So with this i don't really know how to access my data from each controller and is the data is stored locally by doing like this:

NewDocumentController.m

-(void) addNewDocument:(NSString*)name with_niveau:(NSInteger)level{
    Document *doc = [NSEntityDescription insertNewObjectForEntityForName:@"Document" inManagedObjectContext:managedObjectContext];
    doc.nom=name;
    doc.niveau=[NSNumber numberWithInteger:level];
}
-(void) addNewDocument_info:(NSString*)name with_createur:(NSString*)createur with_dateModif:(NSDate*)date1 with_status:(BOOL)etat{

    DocumentInfo *doc_info = [NSEntityDescription insertNewObjectForEntityForName:@"DocumentInfo" inManagedObjectContext:managedObjectContext];

    doc_info.nom =name;
    doc_info.createur=createur;
    doc_info.date_creation=[NSDate date];
    doc_info.date_modification=date1;
    doc_info.status= [NSNumber numberWithBool:etat];
}
Was it helpful?

Solution

You need to save your data:

NSError *error = nil;
[self.managedObjectContext save:&error]; 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top