Reputation: 46410
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
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
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
Reputation: 25429
Yes, Core Data will create the SQLite db just after the first launch of your application in your app delegate.
Upvotes: 7