如何解决迁移实体和父实体
| 我有一个具有两个属性的实体A。实体B具有A作为父对象,并具有其他3个属性。新版本中的更改不会影响实体A和实体B。 如何将实体B的对象迁移到数据模型的新版本,包括来自实体A的属性? 我尝试使用两种实体映射:一种用于A,一种用于B,但是\'A attribute \'不会迁移。或者,我将A \的属性添加到映射中以迁移B,但是在那里我无法选择正确的属性(在Xcode 4中)。 编辑: 我不是指两个实体之间的常规关系,而是继承: 编辑2: 可以肯定的是,我创建了一个新项目进行测试。在这里,我仅添加了两个实体,如上所述。在我的“ 0”中,我执行了提取请求,如果未返回任何结果,则添加一个新实体: 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中的错误。
解决方法
我不确定出了什么问题。
我刚刚创建了此数据模型版本1,希望它尽可能接近您的情况:
然后,我创建了此版本2,对父级和子级没有任何更改,只有一个新实体:
我创建了一个映射模型,这是它自动建议的内容:
让我们看一下差异:
仅有一项更改:新实体Neighbour。
你能发表一些你情况的照片吗?
注意这是XCode3
,原来这是我当时使用的Xcode版本中的一个错误,并已在Xcode 4.2中解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。