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