core-data - NSManagedObjectModel 版本标识符

标签 core-data nsmanagedobject

NSManagedObjectModel -versionIdentifiers 的文档说,

The Core Data framework does not give models a default identifier, nor does it depend this value at runtime. For models created in Xcode, you set this value in the model inspector.

我不确定,但我认为设置版本标识符可能会在我对模型迁移策略类进行编码时有所帮助。有谁知道如何在 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 不同,一旦你到达那里,你并不清楚为什么你想要在那里。

关于core-data - NSManagedObjectModel 版本标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895156/

相关文章:

swift - 我如何在 Swift 中使用这个 fetchRequest()?

ios - 将对象从主队列中的父上下文传递到私有(private)队列中的子上下文

ios - 核心数据 - 选择不同的

ios - 在 Swift 中转换/转换字典

ios - NSPredicate 用于仅查找第一个匹配项

Swift 子类通过绑定(bind)到父类(super class)来采用自定义协议(protocol)

ios - 在 Swift 中设置 NSManagedObject 关系

iphone,在不执行提取的情况下获取对象计数?

ios - 如何使用 Swift CoreData 删除表中的特定行

iphone - 在 NSManagedObjectContext 中调试 SIGABRT -save :