Objective c 如何检查持久存储中是否已存在实体
我对核心数据编程非常陌生。我有一个问题,希望得到澄清 假设我有一个名为Objective c 如何检查持久存储中是否已存在实体,objective-c,core-data,Objective C,Core Data,我对核心数据编程非常陌生。我有一个问题,希望得到澄清 假设我有一个名为Company的NSManagedObject,具有以下属性: 公司名称 公司邮件 霍尼诺公司 公司名称 公司密码 在这个对象中,companyName属性被索引 所以,我的问题是,如何确保只有相同的companyName、companyEmail、companyPhoneNo、companyUserName和companyPassword条目 我是否需要请求检查是否存在具有相同属性值的记录,或者使用对象id进行简单检查就
Company
的NSManagedObject,具有以下属性:
- 公司名称
- 公司邮件
- 霍尼诺公司
- 公司名称
- 公司密码
companyName
属性被索引
所以,我的问题是,如何确保只有相同的companyName、companyEmail、companyPhoneNo、companyUserName和companyPassword条目
我是否需要请求检查是否存在具有相同属性值的记录,或者使用对象id进行简单检查就足够了
谢谢。您有两个选项来维护您的存储区,其中没有重复项:
以下是一个可能有帮助的示例:
NSError * error;
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:NSStringFromClass([self class])
inManagedObjectContext:managedObjectContext]];
[fetchRequest setFetchLimit:1];
// check whether the entity exists or not
// set predicate as you want, here just use |companyName| as an example
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"companyName == %@", companyName]];
// if get a entity, that means exists, so fetch it.
if ([managedObjectContext countForFetchRequest:fetchRequest error:&error])
entity = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] lastObject];
// if not exists, just insert a new entity
else entity = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([self class])
inManagedObjectContext:managedObjectContext];
[fetchRequest release];
// No matter it is new or not, just update data for |entity|
entity.companyName = companyName;
// ...
// save
if (! [managedObjectContext save:&error])
NSLog(@"Couldn't save data to %@", NSStringFromClass([self class]));
提示:countForFetchRequest:error:
实际上不提取实体,它只返回与您之前设置的谓词
匹配的多个实体