Coredata performBlock y luego devuelve el nuevo valor

Cómo devolver el nuevo objeto guardado en coredata si estoy usandoperformBlock para guardar un ManageObjectContext?

El requisito es agregar una entrada en coredata y devolverla. Mi código es algo como esto:

//create a privateMOC
NSManagedObjectContext *private = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];

//set parentContext
[private setParentContext:self.coredataManager.managedObjectContext];

__block Detail *object = nil;

[private performBlock:^{
    //fetch from the db
    object = [self.coredataManager insertObjectWithEntityName:NSStringFromClass([Detail class])];

    //save the private context
    NSError *error = nil;
    if (![private save:&error]) {
        NSLog(@"Error saving context: %@\n%@", [error localizedDescription], [error userInfo]);
    }

}];

return object;

Aquí, dado que el guardado está ocurriendo en Block, la devolución se ejecutará primero. Pero necesito elobject Con el último valor. Cualquier sugerencia por favor.

Respuestas a la pregunta(2)

Su respuesta a la pregunta