是否有一个类似于insertNewObjectForEntityName的方法来编辑在托管对象上下文中传递的当前实体?我不想创建另一个重复的实体。
此外,我不希望用户能够输入具有相同属性的两个实体(一个属性,即事件标题)。如何在尝试添加具有相同标题属性的新实体时弹出警报?
答案 0 :(得分:1)
你的第一个问题听起来像你要做的是获取一个已经在上下文中的对象获取获取请求,更改对象上的一些值,然后在您的上下文中调用-save
方法。
对于第二部分,您要做的是当用户尝试添加项目,搜索具有相同标题的对象的上下文时,如果该项目存在,则弹出警报。
编辑:这是我的应用程序中的一些代码(编辑了一下),我在其中设置并执行了获取请求:
NSFetchRequest *categoryRequest = [[NSFetchRequest alloc] init];
[categoryRequest setEntity:[NSEntityDescription entityForName:@"Category" inManagedObjectContext:[self managedObjectContext]]];
NSString *categoryName = @"Cooking";
NSPredicate *categoryNameMatchesPredicate = [NSPredicate predicateWithFormat:@"name MATCHES %@", categoryName];
[categoryRequest setPredicate:categoryNameMatchesPredicate];
NSError *error = nil;
NSArray *categoryArray = [[self managedObjectContext] executeFetchRequest:categoryRequest error:&error];
在此请求之后,数组categoryArray包含名为“Cooking”的所有类别实体。如果没有名称为“Cooking”的实体,则数组将为空。
使用-countForFetchRequest:error:并在实际执行获取请求之前检查非零计数可能会更快,但我不确定它在小型iOS应用程序中的重要性。