3

我有一个部署的应用程序,用于从传感器采样测量结果(例如,温度°C,压力千帕)。用户可以创建实验并收集样本。每个样本都以Run的形式存储,这样从Experiment到Run就有一对多的关系。为了提高性能,Run与Data实体(这是存储实际原始数据的地方)有一对一的关系;这允许加载一些运行属性而不必加载大量数据。核心一对多关系到多对多关系的数据迁移

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

我面临着尝试将旧的运行一对一数据模型的数据迁移到新的运行对多数据模型。这可以使用映射模型来完成吗?如果是这样,有没有人有任何指向例子?如果没有,有没有人有任何指示如何做到这一点的例子?

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

回答

1

我最终需要多次子类化NSEntityMigrationPolicy。这是必要的,因为属性从不同的实体移动到不同的实体,添加了几个抽象级别以支持更通用的模型。映射模型中实体映射的排序也很重要。

最终,我不得不设置选项-addPersistentStoreType:配置:网址:选项:错误:到:

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

从而省略NSInferMappingModelAutomaticallyOption。

3

该迁移应该足够简单,自动迁移将可以工作。最糟糕的情况是,它需要一个映射模型,但我怀疑它会“开始工作”,通过开启自动迁移。

+0

谢谢,马库斯。唉,在我问这个问题的那一刻到现在,模式变得相当复杂了。然而,仔细阅读(即仔细阅读),您的核心数据手册帮助了很多 - 与您的相关迁移代码一样。 我担心我很快就会继承NSEntityMigrationPolicy。 – westsider 2010-05-10 22:57:12