Non ho idea se questo sia possibile, ma mi salverà da un sacco di stress e codice errato. È possibile monitorare ogni volta che un array viene aggiornato? Ad esempio, il metodo A modifica l'array a=[1,2,3]
a a=[1,2,3,4
], è possibile avere una sorta di delegato che viene attivato quando viene aggiornato a
?Monitorare le modifiche su un oggetto array
risposta
Se la matrice è una proprietà della classe, è possibile utilizzare osservatori di proprietà. willSet viene chiamato prima della modifica, didSet viene chiamato dopo. È veramente facile
var myArray:[Int] = [1, 3, 4] {
didSet {
println("arrayChanged")
}
}
Questo stamperà serie cambiato se aggiungo un int, rimuovere e Int, ecc io in genere messo su una linea però:
var myArray:[Int] = [1, 3, 4] { didSet { println("arrayChanged") } }
Esattamente quello che stavo cercando, grazie. –
Grazie, è stato molto utile –
C'è un modo per monitorare le modifiche degli array interni? Come myArray.append (x)? –
Perché non implementare il proprio protocollo osservabile e rendere gli array in questione è conforme a quello? –
In alternativa, crea un oggetto wrapper che, quando aggiorna la matrice, richiama un doChangeArray() o lancia un bool pubblico che puoi controllare. –
È ora di andare a letto qui. Lo fornirò domani (a meno che qualcun altro non si presenti con una buona idea) –