iHo*_*rse 5 iphone core-data inverse relationship
我是核心数据的新手,所以如果我弄错了一些条款,请原谅.
我的xcdatamodel文件中有几个对象.它们都与关系和反向关系相互关联.如果我使用以下代码连接其中两个对象,则不设置反向关系.
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
Run Code Online (Sandbox Code Playgroud)
我似乎必须使用以下代码手动设置反向关系
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
[managedObj2 setValue: managedObj1 forKey:@"inverseRelatiohipName"];
Run Code Online (Sandbox Code Playgroud)
这似乎对我来说是错误的,但它是我能够使机制发挥作用的唯一方法.我在运行第一个代码块之后查看了sqlite数据库并且没有填充反向关系,但如果我运行第二个代码,那么关系就在那里.
而且,似乎一旦我在Core Data中创建了一个对象,我就无法在之后改变它.dp保持不变.一旦我退出应用程序并重新启动它,我似乎失去了对象的所有关系和属性.我的代码中生成的对象只有nil成员变量.
编辑:
注释掉的东西是之前完成的方式,未注释的东西就是我现在没有运气的方式.
这是我创建对象的地方:
NSEntityDescription* mobileEntity = [NSEntityDescription entityForName:@"WebServiceAuthService_mobileAdvertisementVO" inManagedObjectContext:managedObjectContext];
WebServiceAuthService_mobileAdvertisementVO *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mobileEntity name] inManagedObjectContext:managedObjectContext];
//WebServiceAuthService_mobileAdvertisementVO *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"WebServiceAuthService_mobileAdvertisementVO" inManagedObjectContext:managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
这是我分配其中一个对象成员变量的地方:
[self setValue:newChild forKey:@"advertisement"];
//self.advertisement = newChild;
Run Code Online (Sandbox Code Playgroud)
这是我保存上下文的地方:
NSError *error = nil;
if (managedObjectContext != nil)
{
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
DLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
Run Code Online (Sandbox Code Playgroud)
如果未在数据模型中设置倒数关系,则必须手动设置关系的两侧.如果这样做,则分配关系的一侧会自动分配另一侧.这是数据模型的功能之一.
听起来像你实际上没有将对象插入到NSManagedObjectContext对象中.上下文是"管理"对象并执行自动关系设置之类的操作.上下文也是将对象写入持久性存储的原因.
| 归档时间: |
|
| 查看次数: |
3901 次 |
| 最近记录: |