Core data NSManagedObjectModel版本标识符

Core data NSManagedObjectModel版本标识符,core-data,nsmanagedobject,Core Data,Nsmanagedobject,NSManagedObjectModel-versionIdentifiers的文档中说 核心数据框架不为模型提供默认标识符,也不在运行时依赖此值。对于在Xcode中创建的模型,可以在模型检查器中设置此值 我不确定,但我认为在编写模型迁移策略类时,设置版本标识符可能会对我有所帮助。有人知道如何在Xcode中设置这些标识符吗?我到处闲逛,但没有成功 谢谢。好吧,这个方法最终对我没有帮助。我用以下代码解决了核心数据迁移调试问题: NSURL *storeUrl = [NSURL fileUR

NSManagedObjectModel-versionIdentifiers的文档中说

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

我不确定,但我认为在编写模型迁移策略类时,设置版本标识符可能会对我有所帮助。有人知道如何在Xcode中设置这些标识符吗?我到处闲逛,但没有成功


谢谢。

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

    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不同的是,一旦你进入了平台,你还不清楚你为什么想要进入平台9 3/4