Ho una sottoclasse NSDocument
che presenta un documento di testo dal disco. Sto cercando di farlo aggiornare automaticamente al rilevamento delle modifiche ai file sul disco. Ho sovrascritte -presentedItemDidChange
come questo:Come posso disattivare l'autosalvataggio dell'avviso "Il file è stato modificato da un'altra applicazione"?
- (void)presentedItemDidChange
{
[super presentedItemDidChange];
// Ignoring bundles and error-handling for the moment.
NSData *newData = [NSData dataWithContentsOfURL:self.presentedItemURL];
self.textView.string = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
}
L'interfaccia utente rinfresca bene quando il file viene modificato in un'altra applicazione. Il problema è, ho questa finestra quando si tenta di salvare il documento nella mia applicazione dopo che è stato modificato da un'altra applicazione:
I tipi di un'idea per cui questo accade (non so se sia corretto): L'ora di modifica del documento è successiva (perché modificata da un'altra applicazione) rispetto all'ultima versione salvata nella mia app. Ma posso notificare al sistema di autosalvataggio che ho fatto qualcosa con esso e lasciarlo andare via? O sto facendo qualcosa di sbagliato quando aggiorno il documento, e dovrei farlo in un altro modo per gestire correttamente le versioni dei documenti? Devo considerare il supporto di entrambe le applicazioni esterne o non supportare il salvataggio automatico.
Grazie in anticipo.
Dai un'occhiata a configurePersistentStoreCoordinatorForURL: ofType: modelConfiguration: storeOptions: metodo di errore menzionato in questa pagina http://stackoverflow.com/questions/3872727/programmatically-save-causes-document-to-think-other-app- changes-doc-when-ree ope – Coder404
Ho trovato quel post, ma non sto sovrascrivendo quel metodo nel mio caso, quindi non c'è nulla da eliminare. Inoltre, non impostando né 'setDocumentEdited:' né 'updateChangeCount:' risolve la finestra di dialogo. – uranusjr