È possibile utilizzare Cocoa's Bindings per avere un NSTableView modificabile collegato a un NSMutableArray?

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

Domanda

Sembra dai frammenti che posso mettere insieme che la risposta a questa sarà "no", quindi spiegherò ampiamente cosa sto cercando di ottenere nel (probabile) caso che sto cercando di martellare una vite.

Quello che ho nella mia app è un elenco di estensioni di file valide da leggere, per le quali ricorro attraverso una directory. Voglio che questa sia una preferenza, quindi ho il seguente:

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

e sto collegando NSTableView a un NSArrayController che è associato al controller Default utente condiviso ...

È questo l'approccio completamente sbagliato ad avere un elenco personalizzabile di estensioni valide? Ho frainteso il ruolo di NSUserDefaults?

È stato utile?

Soluzione

La risposta alla domanda posta nel titolo è "Sì" ... ma sfortunatamente ciò non ti aiuta, perché la mutabilità delle strutture di dati nell'attuale archivio di backup NSUserDefaults non è controllata dalla mutabilità di gli oggetti che passi con registerDefaults :.

Per i valori delle preferenze che sono esse stesse strutture, per cambiarle devi leggere la vecchia struttura, creare una copia mutabile di qualunque porzione tu debba modificare, alterarla e quindi impostare quella struttura come nuovo valore. Sfortunatamente non è adatto agli attacchi, quindi avresti bisogno di uno strato di colla che rispecchi le modifiche in un array associato nelle preferenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top