Est-il possible d'utiliser Cocoa's Bindings pour avoir un NSTableView éditable connecté à un NSMutableArray?

StackOverflow https://stackoverflow.com/questions/820717

Question

Il semble, à partir des morceaux que je peux rassembler, que la réponse à celle-ci sera "non", je vais donc expliquer en gros ce que je cherche à réaliser dans le (probable) cas où je suis essayer de marteler une vis.

Ce que j'ai dans mon application est une liste d'extensions de fichiers valides à lire, pour lesquelles je récsures dans un répertoire. Je veux que ce soit une préférence, donc j'ai les éléments suivants:

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"];
[[NSUserDefaults standardUserDefaults] registerDefaults:dic];

et je lie le NSTableView à un NSArrayController qui est lié au contrôleur Shared User Defaults ...

Est-ce une approche complètement fausse pour avoir une liste d'extensions valides personnalisable par l'utilisateur? Ai-je mal compris le rôle de NSUserDefaults?

Était-ce utile?

La solution

La réponse à la question posée dans le titre est "Oui" ... mais malheureusement, cela ne vous aide pas, car la mutabilité des structures de données dans le magasin de sauvegarde NSUserDefaults actuel n'est pas contrôlée par la mutabilité de les objets que vous transmettez avec registerDefaults:.

Pour les valeurs de préférence qui sont elles-mêmes des structures, pour les modifier, vous devez lire l'ancienne structure, créer une copie modifiable de la partie à modifier, modifier celle-ci, puis définir cette structure comme nouvelle valeur. Malheureusement, cela ne convient pas aux liaisons, vous aurez donc besoin d’un calque de colle qui reflète les modifications d’un tableau lié dans les préférences.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top