我是核心数据的新手,所以如果我弄错了一些术语,请原谅。
我的 xcdatamodel 文件中有几个对象。它们都与关系和反向关系相互关联。如果我使用以下代码连接其中两个对象,则未设置反向关系。
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
我似乎必须使用以下代码自己手动设置反比关系
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
[managedObj2 setValue: managedObj1 forKey:@"inverseRelatiohipName"];
这对我来说似乎是错误的,但这是我似乎可以让机制工作的唯一方法。我在运行第一个代码块后查看了 sqlite DB,并且没有填写反向关系,但是如果我运行第二个代码,则关系就在那里。
此外,似乎一旦我在 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];
这是我分配对象成员变量之一的地方:
[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();
}
}