Objective c 迁移实体和父实体

Objective c 迁移实体和父实体,objective-c,cocoa,core-data,core-data-migration,Objective C,Cocoa,Core Data,Core Data Migration,我有一个实体A,它有两个属性。实体B具有一个作为父项的属性,并具有另外3个属性。新版本中的更改不会影响实体A和B 如何将实体B的对象迁移到数据模型的新版本,包括实体a的属性 我尝试使用两个实体映射:一个用于A,一个用于B,但“A属性”没有迁移。或者,我会将A的属性添加到映射中以迁移B,但在那里我无法选择正确的属性(在Xcode 4中) 编辑: 我指的不是两个实体之间的常规关系,而是继承: 编辑2: 为了确保这一点,我创建了一个新的项目进行测试。在此,我仅添加了上述两个实体。在我的awake

我有一个实体A,它有两个属性。实体B具有一个作为父项的属性,并具有另外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中的一个bug。

我不确定出了什么问题

我刚刚创建了此数据模型版本1,我希望它尽可能接近您的案例:

然后我创建了这个版本2,没有对父级和子级的更改,只有一个新实体:

    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"];

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

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

只有一个变化:新的实体邻居

你能把你的情况发几张照片吗


注意这是XCode3

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