Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I set up Core Data lightweight migration using MagicalRecord?

I have hit a brick wall trying to setup lightweight migration of Core Data using MagicalRecord. I have looked at all of the posts on this subject, using Google and SO. I understand how the persistentStoreCoordinator works and what the settings I am trying to make also do.

Here's my code:

AppDeligate.h

NSPersistentStoreCoordinator *persistentStoreCoordinator;

AppDelegate.m

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
}

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"saori.sqlite"]];

// handle db upgrade
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

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

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    
    // Handle error
}

return persistentStoreCoordinator;

}

I'm getting the following errors, which I understand; what I don't know is where are these objects (I have looked in my app, and found nothing):

No visible @interface for 'AppDelegate' declares the selector 'applicationDocumentsDirectory' and

No visible @interface for 'AppDelegate' declares the selector 'managedObjectModel'

I have already created the stores:

xcdatamodeld

Most, if not all of the code I have looked at is similar; I don't know if MagicalRecord handles this for me or not because I can't find any docs that would indicate how to do this using MR. My question is: what do I have to do to make this work?

like image 932
SpokaneDude Avatar asked May 30 '13 16:05

SpokaneDude


2 Answers

The whole point of MagicalRecord is that this is managed for you:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:####];

Check the docs about the Core Data stack setup here.

like image 120
Wain Avatar answered Nov 15 '22 06:11

Wain


Make sure you check all of these things:

In your AppDelegate.m file:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    [MagicalRecord setupAutoMigratingCoreDataStack];
    ...
}

If you haven't versioned your model already:

  • Select your data model

Select your data model

  • Editor -> Add Model Version

    enter image description here

  • Name the new version, Finish

enter image description here

  • There should be two versions now. Select the file as shown.

enter image description here

  • Change the Model Version to your new version

enter image description here

  • The new version should be checked now

enter image description here

like image 28
Whitney Foster Avatar answered Nov 15 '22 08:11

Whitney Foster