Je dois détecter les modifications dans l'objet NSArray - c'est-à-dire si un objet a été ajouté/supprimé de/à partir de NSArray ou a été simplement modifié sur place. Existe-t-il des fonctions de hachage NSArray intégrées pour cette tâche - ou dois-je écrire ma propre fonction de hachage pour NSArray? Peut-être que quelqu'un a une solution différente? Des idées ?Détecter les modifications dans NSArray dans ObjC
Répondre
Vous pouvez utiliser un NSArrayController
, qui est conforme à Key-Value-Observing. Malheureusement, NSArray
est seulement conforme à la norme KVC. De cette façon, vous pouvez facilement surveiller la propriété arrangedObjects
du contrôleur RAID. Cela devrait résoudre votre problème.
Aussi, voir cette question: Key-Value-Observing a to-many relationship in Cocoa
Tous les objets ont une méthode -hash
mais pas tous les objets ont une bonne mise en œuvre.
la documentation NSArray ne définit pas est fait, mais le test révèle retourne la longueur du tableau - pas très utile:
NSLog(@"%lu", @[@"foo"].hash); // output: 1
NSLog(@"%lu", @[@"foo", @"bar"].hash); // output: 2
NSLog(@"%lu", @[@"hello", @"world"].hash); // output: 2
Si les performances ne sont pas critiques, et si le tableau contient <NSCoding>
objets puis vous pouvez simplement serialise le tableau à NSData
qui a une bonne mise en œuvre -hash
:
[NSArchiver archivedDataWithRootObject:@[@"foo"]].hash // 194519622
[NSArchiver archivedDataWithRootObject:@[@"foo", @"bar"]].hash // 123459814
[NSArchiver archivedDataWithRootObject:@[@"hello", @"world"]].hash // 215474591
pour de meilleures performances, il devrait y avoir une réponse expliquant quelque part comment écrire votre propre -hash
méthode. Fondamentalement appelez -hash
sur chaque objet dans le tableau (en supposant que le tableau contient des objets qui peuvent être hachés de manière fiable) et combiner chaque ensemble mélangé avec quelques simples mathématiques aléatoires.
- 1. Comment détecter les modifications dans un objet?
- 2. Détecter les modifications apportées au registre, empêcher les modifications, etc
- 3. Java détecter les modifications dans le système de fichiers
- 4. Détecter les modifications programmatiques dans une zone de sélection html
- 5. Détecter les modifications sur le champ désactivé
- 6. Comment détecter les modifications de préférence d'application
- 7. méthodes d'appel dans ObjC
- 8. Callbacks dans ObjC + Cocoa
- 9. Détecter les modifications webform controls asp.net
- 10. Détecter les modifications DOM du navigateur complet
- 11. Comment détecter les modifications sur UIPickerView?
- 12. Comment détecter les modifications de fichiers?
- 13. Encodage NSURL dans ObjC
- 14. Méthodes privées dans ObjC++
- 15. long int dans ObjC
- 16. Comment détecter les modifications dans un répertoire à travers les exécutions de programme?
- 17. Javascript: Détecter les modifications apportées à JS/DOM côté client
- 18. Modifier les valeurs dans NSArray par déréférencement?
- 19. Enregistrer les modifications dans dataGridView
- 20. Enregistrer les modifications dans SlickGrid
- 21. ReCall NSArray dans RootViewController
- 22. données NSArray dans UILabel
- 23. NSArray imbriqué dans UITableView
- 24. Valeur vide dans NSArray
- 25. initWithCapacity: dans NSArray
- 26. Accéder aux variables statiques dans les catégories ObjC
- 27. Détecter le contact dans UIImageView dans UIScrollView
- 28. Gestion de la mémoire dans ObjC/iPhone
- 29. Méthode rapide/intégrée pour détecter les modifications de table dans SQL Server?
- 30. comment détecter dynamiquement les modifications de résolution d'écran dans adobe AIR
Cela ne vous dira pas si un objet est muté dans le tableau, cependant. Vous devez observer chaque élément du tableau. – Chuck