NSManagedObjectModel versionIdentifiers

时间:2010-10-09 00:22:52

标签: core-data nsmanagedobject

NSManagedObjectModel -versionIdentifiers的文档说,

  

Core Data框架不为模型提供默认标识符,也不在运行时依赖此值。对于在Xcode中创建的模型,可以在模型检查器中设置此值。

我不确定,但我认为在编写模型迁移策略类时,设置版本标识符可能会对我有所帮助。有谁知道如何在Xcode中设置这些标识符?我没有成功地捅了一下。

感谢。

1 个答案:

答案 0 :(得分:3)

好的,这种方法最终对我没有帮助。我使用以下代码解决了我的Core Data迁移调试问题:

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

    NSError *error = nil;
    NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType
                                                                    URL:storeUrl
                                                                    error:&error];

    if (!sourceMetadata)
        NSLog(@"sourceMetadata is nil");
    else
        NSLog(@"sourceMetadata is %@", sourceMetadata);

另一方面,我刚才想出了原来问题的答案,fwiw。

如果你转到你的项目窗口并选择一个.xcdatamodel文件和'获取信息',那么大多数时候你会得到一个'File'Xxx.xcdatamodel“Info”窗口 - 带'General','Targets' ,'构建'和'评论'标签。 (是的,“大部分时间”部分让我感到困惑。)

但是,如果您再次选择.xcdatamodel文件并“获取信息”,您将(可能)获得一个非常不同的检查员 - 一个名为“数据模型”的Xxx“信息”。该窗口有两个选项卡:“外观”和“版本控制”。 Versioning选项卡允许您设置Model Version Identifier。

结论:在Xcode中设置模型版本标识符类似于前往平台9 3/4的方式 - 但与9 3/4不同,一旦到达那里,就不清楚为什么你想要去那里。