What does your 
configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:
 do?

On 2013-06-18, at 5:09 AM, Martin Hewitson <martin.hewit...@aei.mpg.de> wrote:

> Another question on this problem: does anyone know if 
> NSStoreModelVersionIdentifiers is used in looking for a source model to infer 
> a mapping model from?
> 
> To recap:
> 
> 1) Loading an existing document with the version 11 model works
> 2) Adding a new version (12) with a single new boolean property on one entity 
> triggers an automatic migration but the source model is not found
> 3) During the failure, all hashes match between the XML store and the current 
> model version except for the one entity I modified (so the migration is 
> correctly triggered)
> 4) I've confirmed the source model can be loaded in principle by using 
> -metadataForPersistentStoreOfType: and 
> -mergedModelFromBundles:forStoreMetadata:
> 5) With the new version 12 model I can successfully create new documents then 
> save and load them.
> 6) Overriding -managedObjectModel in my NSPersistentDocument to ensure the 
> correct momd is loaded doesn't fix the problem.
> 
> I'm at a bit of a loss what to try next....
> 
> Martin
> 
> 
> On Jun 18, 2013, at 08:38 AM, Dave Fernandes <dave.fernan...@utoronto.ca> 
> wrote:
> 
>> cc'ing the list this time…
>> 
>> On 2013-06-18, at 2:26 AM, Martin Hewitson <martin.hewit...@aei.mpg.de> 
>> wrote:
>> 
>>> 
>>> On Jun 18, 2013, at 08:08 AM, Jerry Krinock <je...@ieee.org> wrote:
>>> 
>>>> 
>>>> On 2013 Jun 17, at 21:13, Martin Hewitson <martin.hewit...@aei.mpg.de> 
>>>> wrote:
>>>> 
>>>>> I did try making a mapping model (this is something I've done in the past 
>>>>> in other apps) but I got the same error message.
>>>> 
>>>> Oh, well.
>>>> 
>>>>> Is the idea that the auto-migration magic will pick up the mapping model 
>>>>> and use it, if it finds it? 
>>>> 
>>>> Yes.  I think the only three things you need do are to specify the current 
>>>> version, and add .xcdatamodel and .xcmappingmodel files to your app 
>>>> target.  Xcode compiles the .xcdatamodel files into .mom files that all 
>>>> get put into a .momd folder which also contains a VersionInfo.plist that 
>>>> specifies the current version and the hashes for the entities in each 
>>>> version; also it compiles each .xcmappingmodel files into a .cdm file.  
>>>> Finally, the .momd folder and all the .cdm files get packaged into your 
>>>> product's Resources.  Given those pieces, it's a pretty easy 
>>>> reverse-engineering exercise to figure out what the auto-migration magic 
>>>> must be doing.
>>> 
>>> According to your description, my app bundle's in good shape. I tried 
>>> making a mapping model and the cdm file shows up in Resources, as expected. 
>>> The momd folder contains all the expected mom and one omo file.
>>> 
>>>> 
>>>> Lately, Xcode has also been adding a .omo file, just one, named for the 
>>>> current version, to the .momd.  On Stack Overflow, 'Bobson' guessed that 
>>>> this was "the same data [as the .mom file], organized differently".  
>>>> Probably not a bad guess.  Maybe optimized for faster access by Mountain 
>>>> Lion or something.
>>> 
>>> Yes, I just noticed this ono file in the app bundle. I was wondering what 
>>> that was...
>>> 
>>> <snip>
>>> 
>>>>> Then I go to open an existing document and I get the dreaded  "migration 
>>>>> failed, missing source managed object model" error.
>>>> 
>>>> 
>>>> After writing this message, you know I think it's more likely that you 
>>>> screwed up and did this…
>>>> 
>>>> • Change the data model a little.
>>>> • Create a document, "E".
>>>> • Get interrupted by a fire drill.
>>>> • Change the data model a little more.
>>>> • Build.
>>>> 
>>>> In this case, indeed *no* version of your app will ever be able to open 
>>>> that document "E".  If this is your "existing" document, the "migration 
>>>> failed, missing source managed object model" error is expected.
>>> 
>>> I don't think this is the case since I can still drop back to version 11 
>>> and open the 'existing' document. I just made a test app and managed to 
>>> perform a lightweight migration much like the one I'm trying here, so I 
>>> guess I'm doing something wrong. I'll try to absorb your other detailed 
>>> comments and see if I can get some more debug output to figure out what's 
>>> going on. 
>>> 
>>> I just had another thought.... I have another core data model in the app. I 
>>> wonder if the NSPersistentDocument infrastructure is picking up the wrong 
>>> model? As I'm looking through the project, I realise I don't know how the 
>>> document knows which core data model to use.... OK, back to the 
>>> documentation on NSPersistentDocument.
>>> 
>> 
>> By default it will merge all models in the main bundle. So if the other 
>> model changed, you would also have a problem. If you want to specify only 
>> one model for the document, you should override [NSPersistentDocument 
>> managedObjectModel].
>> 
>> 
>>> Thanks again,
>>> 
>>> Martin
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> 
>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>>> 
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>> 
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/cocoa-dev/dave.fernandes%40utoronto.ca
>>> 
>>> This email sent to dave.fernan...@utoronto.ca
>> 
> 
> 
> 


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to