Найдите или создайте уникальный объект Core Data

Обычный сценарий для приложений, управляемых основными данными, - получение уникального объекта из резервного хранилища. Если объект с определенным уникальным свойством существует, верните его, если он не вернет вновь созданный. Я обнаружил, что пишу одно и то же снова и снова, поэтому я обернул это удобным методом. Но это кажется таким тривиальным, неужели я изобретаю велосипед здесь? Есть ли более простой способ достичь этого нестандартно?

Ура,
EP

+(id)uniqueEntityfForName:(NSString *)name 
                withValue:(id)value 
                   forKey:(NSString *)key
   inManagedObjectContext:(NSManagedObjectContext *)context {

    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];    
    request.entity = [NSEntityDescription entityForName:name inManagedObjectContext:context];
    request.predicate = [NSPredicate predicateWithFormat:[key stringByAppendingString:@" == %@"], value];
    NSArray *result = [context executeFetchRequest:request error:nil];

    id entity = [result lastObject];
    if (entity == nil) {
        entity = [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:context];
        [entity setValue:value forKey:key];
    } else {
        entity = [result lastObject];
    }

    return entity;
}

Я использую этот метод следующим образом:

SomeEntity *entity = [CDUtils uniqueEntityfForName:@"SomeEntity" withValue:@"foo" forKey:@"bar" inManagedObjectContext:context];
13
задан epologee 12 February 2011 в 00:43
поделиться