代码之家  ›  专栏  ›  技术社区  ›  westsider

一对多关系的核心数据迁移

  •  3
  • westsider  · 技术社区  · 15 年前

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

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

    我面临着试图将数据从旧运行迁移到一个数据模型,再迁移到新运行到多个数据模型的问题。这可以用映射模型来实现吗?如果是的话,有没有人有任何例子的线索?如果没有,有没有人有任何指示如何做到这一点的例子?

    谢谢你的指点和建议。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Marcus S. Zarra    15 年前

    这种迁移应该足够容易,可以自动迁移。最糟糕的情况是,它需要一个映射模型,但我怀疑通过启用自动迁移,它会“正常工作”。

        2
  •  1
  •   westsider    14 年前

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

    最后,我必须为-addPersistentStoreType:configuration:url:options:error:to设置选项:

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

    因此省略了nsinfermappingmodelautomaticallyoption。