La documentation on -setPrimitiveValue:forKey:
de Apple es vaga de dos maneras cuando se usa para gestionar muchas relaciones.setPrimitiveValue: ForKey: y para muchas relaciones
Primera Afirman:
Si se intenta establecer una relación de muchos a un nuevo objeto NSMutableSet, será (con el tiempo) fallará.
Eventually ?! ¿Qué significa eso? ¿Fallará más tarde durante el -[NSManagedObjectContext save:]
? Cuando un objeto administrado se convierte en un error y luego se vuelve a ubicar? ¿Cuando? ¿Puedo escribir un caso de prueba para recrear de manera consistente el error a pedido?
En segundo lugar, proporciona código de ejemplo para manejar correctamente este caso, escriben:
primero obtener el conjunto existente usando
primitiveValueForKey:
(garantizar el método no devuelvenil
)
¿Qué debo hacer si/cuando el método hace ¿devuelve nil? assert()
y fallar de inmediato porque eso significa que todo el gráfico del objeto está dañado y el ahorro dará lugar a la pérdida de datos? NSAssert()
en él como una advertencia para la persona que llama pero sigue presionando (silenciosamente sin hacer nada)?
En este momento estoy simplemente asignar directamente a mi deseada NS[Mutable]Set
en ese caso, así:
- (void)setChildren:(NSSet*)value_ {
NSMutableSet *mutableRelationshipSet = [[[self primitiveValueForKey:@"children"] mutableCopy] autorelease];
if (mutableRelationshipSet) {
[mutableRelationshipSet setSet:value_];
[self setPrimitiveValue:mutableRelationshipSet forKey:@"children"];
} else {
[self setPrimitiveValue:value_ forKey:@"children"];
}
}
¿Eso es malo?