1

NSManagedObject属性を一意にするための最良の方法は何ですか?

たとえば、willSaveまたはvalidateForInsert:またはvalidateForUpdate:管理対象オブジェクトメソッドを使用して、入力された値attributeUniqueが一意であるかどうかを確認する必要がありますか?そして、どのくらい正確に?

4

1 に答える 1

0

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;
}
于 2012-09-14T11:08:28.110 に答える