7

Tengo una pregunta rápida con respecto a KVO. Entiendo que para un NSArray si se desean adiciones, puede hacer lo siguiente.NSMutableDictionary adición y eliminación KVO

NSIndexSet* set = [NSIndexSet indexSetWithIndex:[someIndex integerValue]]; 
      [self willChange:NSKeyValueChangeInsertion valuesAtIndexes:set forKey:@"theArrayName"]; 
       // add the objects at the specified indexes here 
      [self didChange:NSKeyValueChangeInsertion valuesAtIndexes:set forKey:@"theArrayName"]; 

Al registrarse para la observación, obtendrá un diccionario de cambio con los índices que han cambiado.

Sin embargo, no entiendo cómo puedo observar nuevas adiciones de objetos a un NSMutableDictionary. ¿Hay alguna forma de observar el agregado/eliminación de objetos?

Gracias,

[EDIT] he encontrado una solución que satisface mis necesidades actuales. Espero que lo siguiente ayude a futuros desarrolladores.

[self willChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 

[Images setObject:someObject forKey:someIndex]; 

[self didChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 
+6

+1. Buena pregunta/respuesta. Debe publicar la respuesta que ha incrustado en su pregunta como respuesta. Actualmente se encuentra en la lista "Sin respuesta". En realidad, se alienta la publicación de una respuesta a su propia pregunta en SO. Al hacer una pregunta, ya sabes la respuesta e inmediatamente después de publicar la respuesta también se recomienda (asumiendo que la pregunta es buena y que otros también pueden encontrar). – Sam

Respuesta

3

Solo para asegurarse de que la pregunta sea respondida. el crédito va a @DoubleDunk

[self willChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 

    [Images setObject:someObject forKey:someIndex]; 

    [self didChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 
Cuestiones relacionadas