【问题标题】:Migrating entities and parent entities迁移实体和父实体
【发布时间】:2011-09-02 00:57:37
【问题描述】:

我有一个实体 A,它有两个属性。实体 B 将 A 作为父级,并具有额外的 3 个属性。新版本的更改不会影响实体 A 和 B。

如何将实体 B 的对象迁移到我的数据模型的新版本,包括实体 A 的属性?

我尝试使用两种实体映射:一种用于 A,另一种用于 B,但“A 属性”未迁移。或者,我会将 A 的属性添加到映射以迁移 B,但我无法选择正确的属性(在 Xcode 4 中)。


编辑:

我指的不是两个实体之间的常规关系,而是继承:


编辑 2:

为了确定,我创建了一个新项目来进行测试。在这里,我只添加了上面看到的两个实体。在我的awakeFromNib 中,我做了一个获取请求,如果没有返回结果,我添加一个新实体:

    NSManagedObject *newAccount = [[NSManagedObject alloc] initWithEntity:entityDesc insertIntoManagedObjectContext:[self managedObjectContext]];

    // Account
    [newAccount setValue:@"TheName" forKey:@"name"];
    [newAccount setValue:[NSDecimalNumber decimalNumberWithMantissa:5 exponent:2 isNegative:NO] forKey:@"currentBalance"];

    // BankDebitAccount
    [newAccount setValue:@"TheAccountNumber" forKey:@"accountNumber"];
    [newAccount setValue:@"TheBankName" forKey:@"bankName"];
    [newAccount setValue:[NSDecimalNumber decimalNumberWithMantissa:6 exponent:1 isNegative:YES] forKey:@"openingBalance"];

在我的第二个数据模型版本中,我添加了一个新实体并通过

启用了自动迁移
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];

if (![__persistentStoreCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:dict error:&error]) {

确实发生了迁移,并且成功迁移了 BankDebitAccount 中的三个属性。 Account 的 currentBalance 属性重置为 0,并且 name 属性在 XML 文件中不再可见(因此,等于 nil)。


编辑 3: 我刚刚尝试在 Xcode 3(.2.4) 中打开这个新制作的测试项目。当我在那里打开映射模型并选择我的子实体的映射时,我实际上可以为父属性添加一个属性映射:

所以,我想这会成为 Xcode 4 中的一个错误。

【问题讨论】:

    标签: objective-c cocoa core-data core-data-migration


    【解决方案1】:

    我不确定出了什么问题。

    我刚刚创建了这个数据模型版本 1,我希望这尽可能接近您的情况:

    然后我创建了这个版本2,Parent和Child没有变化只有一个新实体:

    我创建了一个映射模型,这是它自动建议的:

    让我们来看看它们的区别:

    只有一个变化:新实体 Neighbour。

    你能发布一些你的情况的照片吗?

    注意这是 XCode3

    【讨论】:

      【解决方案2】:

      原来这是我当时使用的 Xcode 版本中的一个错误,并在 Xcode 4.2 中得到了解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多