我是核心数据的新手,所以如果我弄错了一些术语,请原谅。
我的 xcdatamodel 文件中有几个对象。它们都是相互关联、相互关联的。如果我使用以下代码连接其中两个对象,则不会设置逆关系。
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
我似乎必须用以下代码自己手动设置逆关系
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
[managedObj2 setValue: managedObj1 forKey:@"inverseRelatiohipName"];
这对我来说似乎是错误的,但这是我能让该机制发挥作用的唯一方法。我在运行第一个代码块后查看了 sqlite DB,并且未填写逆关系,但如果我运行第二个代码,则关系就在那里。
另外,似乎一旦我在核心数据中创建了一个对象,我就无法再更改它了。 dp 保持不变。一旦我退出应用程序并重新启动它,我似乎就失去了对象的所有关系和属性。我的代码中生成的对象除了 nil 成员变量之外什么都没有。
EDIT:
注释掉的内容是以前完成的方式,未注释的内容是我现在的做法,但运气不好。
这是我创建对象的地方:
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];
这是我分配对象成员变量之一的地方:
[self setValue:newChild forKey:@"advertisement"];
//self.advertisement = newChild;
这是我保存上下文的地方:
NSError *error = nil;
if (managedObjectContext != nil)
{
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
DLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}