Note that there are some explanatory texts on larger screens.

plurals
  1. PORecreate persistence store after removing previous sqlite store file
    primarykey
    data
    text
    <p>I would like to remove my sql lite file and set up the persistance store again. </p> <pre><code>//Explicitly write Core Data accessors - (NSManagedObjectContext *) managedObjectContext { if (managedObjectContext != nil) { return managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { managedObjectContext = [[NSManagedObjectContext alloc] init]; [managedObjectContext setPersistentStoreCoordinator: coordinator]; } return managedObjectContext; } - (void) setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext{} - (NSManagedObjectModel *)managedObjectModel { if (managedObjectModel != nil) { return managedObjectModel; } managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil] ; return managedObjectModel; } -(void) setManagedObjectModel:(NSManagedObjectModel *)managedObjectModel{} - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (persistentStoreCoordinator != nil) { return persistentStoreCoordinator; } NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Port.sqlite"]]; NSError *error = nil; persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&amp;error]) { NSLog(@"Could not create store .... %@", error ); /*Error for store creation should be handled in here*/ } return persistentStoreCoordinator; } </code></pre> <p>I am trying to reset my scene like this </p> <pre><code>- (void)reset { // Release CoreData chain self.managedObjectContext = nil; self.managedObjectModel = nil; self.persistentStoreCoordinator = nil; // Delete the sqlite file NSError *error = nil; NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Port.sqlite"]]; if ([fileManager fileExistsAtPath:storeUrl.path]){ [fileManager removeItemAtURL:storeUrl error:&amp;error]; } self.managedObjectContext = [self managedObjectContext]; self.managedObjectModel = [self managedObjectModel]; self.persistentStoreCoordinator = [self persistentStoreCoordinator]; // handle error... } </code></pre> <p>I am getting an error while saving:</p> <pre><code>+ (BOOL)saveAll { // [self createStorage]; NSError *error = nil; NSManagedObjectContext *managedObjectContext = [(WSSMobileAppsAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; if (![managedObjectContext save:&amp;error]) { NSLog(@"Error while saving %@", error); return FALSE; } return TRUE; } </code></pre> <p>The error:</p> <pre><code>Error while saving Error Domain=NSCocoaErrorDomain Code=134030 "The operation couldn’t be completed. (Cocoa error 134030.)" UserInfo=0x7195ac0 {NSAffectedStoresErrorKey=( "&lt;NSSQLCore: 0x714eee0&gt; (URL: file://localhost/Users/.../Library/Application%20Support/iPhone%20Simulator/5.0/Applications/CEDB9019-1D64-4968-9BE7-57E1493B96EC/Documents/Port.sqlite)" ), NSUnderlyingError=0x7195a50 "The operation couldn’t be completed. (Cocoa error 4.)", NSFilePath=/Users/.../Library/Application Support/iPhone Simulator/5.0/Applications/CEDB9019-1D64-4968-9BE7-57E1493B96EC/Documents/Port.sqlite} </code></pre> <p>I only get the error if I run my reset function. I thought that setting: </p> <pre><code>self.managedObjectContext = nil; self.managedObjectModel = nil; self.persistentStoreCoordinator = nil; </code></pre> <p>...would solve the problem. Then everything would be recreated. Please help. </p> <hr> <p>Thank you very much for your answers. Now there is no error but nothing gets stored if I run my reset. I do a fetch right after saving </p> <pre><code>if (![managedObjectContext save:&amp;error]) { NSLog(@"Error while saving %@", error); return FALSE; } CoreDataPortService *c = [[CoreDataPortService alloc] init]; NSLog(@"Saved all.... got number of ports ... %d", [[c getPorts] count]); </code></pre> <p>I if don't run my reset method everything works as expected. What can be wrong?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload