dontWatchMyProfile
dontWatchMyProfile

Reputation: 46410

Will Core Data create the persistent store file for me?

Please tell me: If I use Core Data in my iPhone app, I have basically two files. The mydatamodel.xcdatamodel file, and then I need an .sqlite file. Apple provides this code snippet:

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

    NSString *appDirPath = [self applicationDocumentsDirectory];
    NSString *storeFileName = @"mystore.sqlite";
    NSURL *storeUrl = [NSURL fileURLWithPath:[appDirPath stringByAppendingPathComponent:storeFileName]];

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
        NSLog(@"Error: %@, %@", error, [error userInfo]);
        abort();
    }

    return persistentStoreCoordinator;
}

Will this create the file if it's not available already?

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]

My app doesn't need initial data, because it will download it when the user launches the app.

Upvotes: 4

Views: 3631

Answers (3)

Ryan Ferretti
Ryan Ferretti

Reputation: 2961

Yes, that method adds a new persistent store of a specified type at a given location, and returns the new store. Here is the documentation.

Upvotes: 1

gerry3
gerry3

Reputation: 21460

Yes. The boiler-plate Core Data stack code provided by Apple's templates will create the database file if it doesn't already exist.

Upvotes: 2

Massimo Cafaro
Massimo Cafaro

Reputation: 25429

Yes, Core Data will create the SQLite db just after the first launch of your application in your app delegate.

Upvotes: 7

Related Questions