【问题标题】:NSManagedObjectModel versionIdentifiersNSManagedObjectModel 版本标识符
【发布时间】:2010-10-09 00:22:52
【问题描述】:

NSManagedObjectModel -versionIdentifiers 的文档说,

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

我不确定,但我认为设置版本标识符可能会帮助我编写模型迁移策略类的代码。有谁知道如何在 Xcode 中设置这些标识符?我试了好一阵子都没有成功。

谢谢。

【问题讨论】:

    标签: core-data nsmanagedobject


    【解决方案1】:

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

        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 文件并“获取信息”,那么大多数情况下您将获得一个“文件”Xxx.xcdatamodel“信息”窗口 - 带有“常规”、“目标” 、“构建”和“评论”选项卡。 (是的,“大部分时间”部分让我感到困惑。)

    但是,如果您随后再次选择 .xcdatamodel 文件并“获取信息”,您将(可能)获得一个非常不同的检查器 - 一个称为“数据模型“Xxx”信息”的检查器。此窗口有两个选项卡:“外观”和“版本控制”。版本控制选项卡可让您设置模型版本标识符。

    底线:在 Xcode 中设置模型版本标识符类似于进入 9 3/4 平台 - 但与 9 3/4 不同的是,一旦你到达那里,就不清楚你为什么想要在那里。

    【讨论】:

      猜你喜欢
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多