3

我有一个部署的应用程序,它从传感器(例如,温度°C、压力 kPa)中采样测量值。用户可以创建实验并收集样本。每个样本都存储为一个运行,因此从实验到运行之间存在一对多的关系。出于性能考虑,Run 与 Data 实体(存储实际原始数据的位置)是一对一的关系;这允许加载一些运行属性,而不必加载大量数据。

我们的大多数传感器都有多个测量值,因此最好存储所有实际采样的数据。但这意味着 Run <---> Data 关系需要变成 Run <-->> Data (使用 Xcode 的约定)。

我面临着尝试将数据从旧的 Run to-one Data 模型迁移到新的 Run to-many Data 模型。这可以使用映射模型来完成吗?如果是这样,是否有人对示例有任何指示?如果没有,有没有人有任何关于如何做到这一点的例子的指针?

感谢您的任何指示或建议。

4

2 回答 2

3

这种迁移应该足够简单,以至于自动迁移将起作用。最坏的情况是它需要一个映射模型,但我怀疑它会通过打开自动迁移“正常工作”。

于 2010-05-05T21:58:30.437 回答
1

我最终需要多次继承 NSEntityMigrationPolicy。这是必要的,因为属性正在从/向不同实体移动,并添加了几个抽象级别以支持更通用的模型。同样重要的是映射模型中实体映射的顺序。

最终,我不得不将 -addPersistentStoreType:configuration:URL:options:error: 的选项设置为:

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil];

因此省略了 NSInferMappingModelAutomaticallyOption。

于 2010-10-15T17:14:41.937 回答