gpt4 book ai didi

objective-c - 迁移实体和父实体

转载 作者:行者123 更新时间:2023-12-03 18:01:27 25 4
gpt4 key购买 nike

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

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

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

<小时/>

编辑:

我指的不是两个实体之间的常规关系,而是继承: Image showing client and parent entity

<小时/>

编辑 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) 中打开这个新制作的测试项目。当我打开其中的映射模型并选择子实体的映射时,我实际上可以为父实体的属性添加属性映射:

Child's entity mapping in Xcode 3

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

最佳答案

我不确定出了什么问题。

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

enter image description here

然后我创建了这个版本 2,对 Parent 和 Child 没有任何更改,只有一个新实体:

enter image description here

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

enter image description here

让我们看看差异:

enter image description here

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

你能发一些照片来说明你的情况吗?

注意这是 XCode3

关于objective-c - 迁移实体和父实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com