使NSManagedObject
属性唯一的最佳方法是什么?
例如,是否应该使用willSave
或validateForInsert:
或validateForUpdate:
托管对象方法来检查输入的值attributeUnique
是否是唯一的?而且,究竟如何?
使NSManagedObject
属性唯一的最佳方法是什么?
例如,是否应该使用willSave
或validateForInsert:
或validateForUpdate:
托管对象方法来检查输入的值attributeUnique
是否是唯一的?而且,究竟如何?
我最终编写了一个NSManagedObject
类别方法,并使用了NSManagedObject
的验证方法:
- (BOOL)isValueUniqueForKey:(NSString *)key {
NSEntityDescription *entity = [NSEntityDescription entityForName:[self.entity name]
inManagedObjectContext:self.managedObjectContext];
id value = [self valueForKey:key];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ = %@", key, value];
fetchRequest.predicate = predicate;
NSError *error = nil;
NSUInteger count = [self.managedObjectContext countForFetchRequest:fetchRequest
error:&error];
if (count > 1) {
return NO;
}
return YES;
}