user1987329
user1987329

Reputation: 17

Core data relationship with prepopulated sqlite

First of all, Sorry. I'm not good at English. Hi. I'm beginner of iOS.

Currently I developing like this:

  1. delete auto generated core data sqlite file
  2. copy my created sqlite file to deleted sqlite file path by using firefox sqlite manager
    (sqlite using Z_PK, Z_ENT, Z_OPT)

Two questions:

  1. How create entity relationships using firefox sqlite manager.
  2. How pre create in case of detail core data options like relationship delete rule, attribute property on sqlite manager or anything else.

Upvotes: 0

Views: 967

Answers (2)

HackaZach
HackaZach

Reputation: 409

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (_persistentStoreCoordinator != nil) {
    return _persistentStoreCoordinator;
}

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataBooks.CDBStore"];

/*
 Set up the store.
 For the sake of illustration, provide a pre-populated default store.
 */
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn’t exist, copy the default store.
if (![fileManager fileExistsAtPath:[storeURL path]]) {
    NSURL *defaultStoreURL = [[NSBundle mainBundle] URLForResource:@"CoreDataBooks" withExtension:@"CDBStore"];
    if (defaultStoreURL) {
        [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
    }
}

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

NSError *error;
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
    /*
     Replace this implementation with code to handle the error appropriately.

     abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 

     Typical reasons for an error here include:
     * The persistent store is not accessible;
     * The schema for the persistent store is incompatible with current managed object model.
     Check the error message to determine what the actual problem was.


     If the persistent store is not accessible, there is typically something wrong with the file path. Often, a file URL is pointing into the application's resources directory instead of a writeable directory.

     If you encounter schema incompatibility errors during development, you can reduce their frequency by:
     * Simply deleting the existing store:
     [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil]

     * Performing automatic lightweight migration by passing the following dictionary as the options parameter:
     @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}

     Lightweight migration will only work for a limited set of schema changes; consult "Core Data Model Versioning and Data Migration Programming Guide" for details.

     */
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

return _persistentStoreCoordinator;

Code taken from Apple docs Core Data Books Link You'll need to have a pre-populated DB of data which has been populated via Core Data. This function copies the pre-populated database into the main DB store location when the app first launches.


Upvotes: 1

borrrden
borrrden

Reputation: 33421

Well, basically you need to get a hold of an empty database that was created by your project using your schema, and then manipulate it to hold the data that you want. More info here

The alternative method, which is not described in the link, is copying the data from your database into the Core Data database using Core Data itself (and a SQLite library to read the other database).

Upvotes: 0

Related Questions