How to remove a core data persistent store

后端 未结 3 1080
终归单人心
终归单人心 2021-02-06 10:19

I need to delete my persistent store (doing it object by object is not practical because I have over 100,000 objects). I\'ve tried this:

- (IBAction)resetDatabas         


        
3条回答
  •  無奈伤痛
    2021-02-06 10:47

    Here is how I do a "reset data" function in several apps:

    - (void)reset {
      // Release CoreData chain
      [_managedObjectContext release];
      _managedObjectContext = nil;
      [_managedObjectModel release];
      _managedObjectModel = nil;
      [_persistentStoreCoordinator release];
      _persistentStoreCoordinator = nil;
    
      // Delete the sqlite file
      NSError *error = nil;
      if ([fileManager fileExistsAtPath:_storeURL.path])
        [fileManager removeItemAtURL:_storeURL error:&error];
      // handle error...
    }
    

    Basically I just release the CoreData chain, then delete the persistentStore file. That's what you are trying to do, without using removePersistentStore, which I do not care since I will just rebuild the persistentStore coordinator later. Then at next core data call the chain is rebuilt transparently using singleton-lazy-style constructors like :

    - (NSManagedObjectModel *) managedObjectModel {
      if (!_managedObjectModel)
        _managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
      return _managedObjectModel;
    }
    

提交回复
热议问题