開発
Including Core Data in existing iOS project
will
Core Data is not new for many iOS developers. It was introduced in Mac OS X 10.4 Tiger and iOS 3.0. It provides possibility to include data store functions quickly to Mac OS App and iOS app.
There are already official manuals from Apple and a lot of blogs from other iOS developers[1][2].
This blog is aimed at including the necessary informations to have a fast usage of Core Data in existing iOS app.
1. Create Data Model of Core Data
File >> New >> File, select Core Data >> Data Model. A new xcdatamodeld file will be included in the project.
2. Include the CoreData.framework in the project
3. In the AppDelegate.h, including the following code:
#import <CoreData/CoreData.h> #define ApplicationDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)
4. In the AppDelegate.m, including the following methods:
/**
Returns the managed object context for the application.
If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
*/
- (NSManagedObjectContext *) managedObjectContext {
if (managedObjectContext != nil) {
return managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return managedObjectContext;
}
/**
Returns the managed object model for the application.
If the model doesn't already exist, it is created by merging all of the models found in the application bundle.
*/
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
return managedObjectModel;
}
/**
Returns the persistent store coordinator for the application.
If the coordinator doesn't already exist, it is created and the application's store added to it.
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"RoomMap.sqlite"]];//you can decide the name of sqlite file
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
// Allow inferred migration from the original version of the application.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle the error.
}
return persistentStoreCoordinator;
}
/**
Returns the path to the application's documents directory.
*/
- (NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
5. In AppDelegate.m, add these code in the – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions method
// Override point for customization after application launch.
NSManagedObjectContext *context = [self managedObjectContext];
managedObjectContext = context;
Finished to include the necessary code, you can start to use core data to store information.
References:
[1] Core Data on iOS 5 Tutorial: Getting Started
[2] Core Data Tutorial for iOS
2024/09/13
2024/05/17
2024/05/10
2024/01/05
2023/08/18
2023/07/14
2023/05/12