托管对象使用旧数据保存

时间:2011-02-15 17:54:51

标签: iphone objective-c core-data

我正在尝试将对象添加到Core Data中的持久存储中 当用户点击保存按钮时,我初始化一个新对象,该对象是NSManagedObject类的子类和数据模型。

Profile *newProfile = [[Profile alloc] initWithEntity:[NSEntityDescription entityForName:@"Profile" inManagedObjectContext:MOC] insertIntoManagedObjectContext:MOC];

[newProfile setValue:userName.text forKey:@"userName"];
[newProfile setValue:txtInstitution.text forKey:@"institution"];

我可以在控制台中验证userName和txtInstitution的值是否正确以及预期的值,以及该对象具有适当的属性。但是,它似乎使用与保存的第一个对象相同的值保存对象。一次只创建一个配置文件,并以这种方式添加每个配置文件后保存MOC。

此外,当一个表尝试使用来自持久性存储的数据进行填充时,它将创建行,就好像我当时创建的商店中的对象一样多,但它们都将具有相同的值。

2 个答案:

答案 0 :(得分:0)

您确定要正确检索商店中的对象吗?听起来这可能是您用来从商店中获取数据的获取请求和/或显示数据的方式的问题。

答案 1 :(得分:0)

您是否有任何特殊原因未使用NSManagedObjects的指定初始化程序?

- (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context

所以你应该使用:

Profile *newProfile = [NSEntityDescription insertNewObjectForEntityForName:@"Profile" inManagedObjectContext:self.MOC];

另外请确保您通过其属性(self.MOC,而不是ivar直接访问)访问您的MOC,就像您使用Apple提供的模板一样,您会注意到MOC是通过其getter方法延迟加载的。