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;
}