Xcode 4, Core Data Model Version - Set Current Version

Core DataXcode4

Core Data Problem Overview


I'm confused about how to perform the following function in Xcode 4 to set the model to use after creating a versioned model.

Design > Data Model > Set Current Version

Core Data Solutions


Solution 1 - Core Data

  1. Click on the top level .xcdatamodelId file (the one that has the many versions of .xcdatamodel under it as children).
  2. Make sure the Utilities sidepane is visible (if not click on the third "View" button at the top right of the window).
  3. In the Utilities sidepane select the File inspector (little paper icon on the top left)
  4. You will see "Versioned Core Data Model" as a group so just change the "Current" drop-down to your new version.

Solution 2 - Core Data

In Xcode 4, if you only see one version of your data model under the "Versioned Core Data Model - Current" section of the file inspector when you have your *.xcdatamodeld file selected; or you have a 2nd version of your *.xcdatamodel file showing outside of the xcdatamodeld bundle in Xcode's project navigator, read below.

To fix this:

1) Remove both both the *.xcdatamodeld and *.xcdatamodel references from Xcode by right clicking on them in the project navigator and hitting "Delete".

2) When prompted by Xcode, click Remove References Only (very important).

3) Restart Xcode for good measure in case there is any caching going on.

4) Re-add the single *.xcdatamodeld file that contains both *.xcdatamodel files.

Xcode should now recognize the relationships and allow you to expand the *.xcdatamodeld file in the project navigator to show both *.xcdatamodel files under the parent xcdatamodeld bundle, also showing a green checkmark next to the current model. This should also allow you to select the current version of the data model in the file inspector instead of only showing one version.

Solution 3 - Core Data

For Xcode 4.2

  1. Click on YourModel.xcdatamodeld

  2. Make the side pane visible

  3. Under "versioned core data model", select the "current drop down box", select you data model.

Now the green tick mark is moved to your current data model.

Solution 4 - Core Data

Searching in Xcode's Help for "Current Version" yields a recipe "Setting a Managed Object Model’s Current Version" which describes how to do this...

Solution 5 - Core Data

Important note to the previous answers: One one the entities in the model needs to be focused in order for the dropdown menu to appear.

Steps for Xcode 12.1

  1. Select the topmost data model (the one that has children version models). enter image description here
  2. Select one of the entities for the dropdown to appear. enter image description here
  3. Select model version from the dropdown menu enter image description here

Solution 6 - Core Data

A little off topic, but if you've reached this question in order to know how to create a first new version of your model (like i did) : click on the xcdatamodel file >> Menu "Editor" >> Add Model version

This will initiate the versionning of the model.

Solution 7 - Core Data

This worked for me: https://developer.apple.com/library/mac/recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html

selecting the core data model version

Now my automatic db model migration works(with the automatic migration code in the delegate).

Solution 8 - Core Data

You can also use setter method from CoraData ...
Just do something like this...

In your CustomCoreDataManager.m:

#import "ObjectiveRecord.h"

and call the init method like this

- (instancetype)init {
    
    self = [super init];
    
    if (self) {           
        [[CoreDataManager sharedManager] setModelName:@"YourModelName"];
    }
    
    return self;
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNate PotterView Question on Stackoverflow
Solution 1 - Core DataBenView Answer on Stackoverflow
Solution 2 - Core DataAndrewView Answer on Stackoverflow
Solution 3 - Core DataDaxView Answer on Stackoverflow
Solution 4 - Core DatammalcView Answer on Stackoverflow
Solution 5 - Core DataBartosz KunatView Answer on Stackoverflow
Solution 6 - Core DataBen GView Answer on Stackoverflow
Solution 7 - Core DatajtoulView Answer on Stackoverflow
Solution 8 - Core DataJohnView Answer on Stackoverflow