如何在保存新对象之前检查对象是否已存在于数据库中?

时间:2010-02-11 20:03:30

标签: iphone cocoa-touch core-data

示例:我有一个朋友列表,我从Web服务器检索为XML。在设备上,我想在本地存储具有更新功能的朋友。但我只想存储新朋友。为了简单起见,我只用它们的名字来区分它们(是的,这很糟糕!)。

当XML解析器遍历XML时,它会为所有朋友生成托管对象,并将它们挂起到托管对象上下文中。但在我保存上下文之前,我想摆脱已经在数据库中的所有“新”朋友。目前我有:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Friend" inManagedObjectContext:context]; 

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 

[request setEntity:entityDescription]; 

[request setPredicate:[NSPredicate predicateWithFormat:@"firstName == 'George'"]]; 
NSError *error = nil; 
NSArray *array = [context executeFetchRequest:request error:&error];

问题是,可能是:它会在整个托管对象上下文中找到朋友,还有那些不在数据库中的朋友。我怎样才能确保我只保存那些真正新的东西,然后在保存之前抛弃重复的东西?

1 个答案:

答案 0 :(得分:1)

使用唯一ID。为您的Friend实体添加一个属性。例如,它可能是Web数据库的主键。