iphone - restricciones - Valor clave observando con un NSArray
nfc iphone 7 como activar (1)
No necesita un NSArrayController para observar los cambios en un NSArray
. Sin embargo, no puede observar directamente estos cambios, es decir, no puede llamar a -addObserver:forKeyPath:options:context:
directamente en un NSArray
. En tu caso, quieres llamarlo a tu GameModel
con @"playerNameArray"
como la clave.
Aún no has terminado. Las notificaciones automáticas normales de KVO solo se activarán si llama a -setPlayerNameArray:
reemplazando así la matriz completa. Si desea notificaciones más granulares, necesita usar -willChange:valuesAtIndexes:forKey:
y -didChange:valuesAtIndexes:forKey:
cada vez que inserte, elimine o reemplace elementos en esa matriz.
Esto enviará una notificación cada vez que cambie el contenido de la matriz. Dependiendo de la NSKeyValueObservingOptions
que usa al agregar su observador, también puede obtener los cambios incrementales que se realizan, una característica interesante, pero es posible que no la necesite en este caso.
Nota: NSArrayController no existe en iOS. Es parte de Cocoa Bindings, que actualmente solo existe en AppKit en Mac OS X. Afortunadamente, no lo necesitas.
He buscado en SO ejemplos de uso de Key Value Observing con un NSArray
(o NSMutableArray
) y aparentemente necesitas usar un NSArrayController
(que a diferencia de KVO
no estoy familiarizado), pero no he encontrado ejemplos concretos de para hacer esto. ¿Alguien puede explicar con algún código de ejemplo?
Por ejemplo, si tengo un GameModel
que representa los nombres de sus jugadores con un NSArray (playerNameArray)
de NSStrings
. Quiero observar esas cadenas (el controlador de vista observa los datos del modelo) para actualizar varias cosas en la vista.
¿Cómo recibo la notificación de que la matriz de nombres de jugadores ha cambiado?
EDIT : ¿El SDK de iOS es compatible con NSArrayController
? Si no, ¿hay otra manera?