Question

Je développe une application qui est actuellement sandbox. Il agit comme un éditeur de texte de base. Récemment, je voulais tester ce qui se passe quand j'ouvrir un fichier dans mon application et une autre application en même temps, faire une mise à jour dans une application, puis ensuite voir le jour dans l'autre. J'utilise Coda ou BBEdit que mes éditeurs alternatifs. Si j'éteins sandboxing - ce problème n'existe pas alors. Cependant, étant donné que les applications doivent être sandbox à partir du 1er Mars, je préfère mettre en œuvre une solution plutôt que d'attendre et de voir.

Quand j'ouvre les fichiers et faire une modification dans mon application, puis passer à l'autre application, les modifications sont répercutées de façon que ces éditeurs ont la version juste sauvé de mon application. Cependant, si je réalise l'inverse de sauver de leur application, puis de passer à la mienne - pas de joie. Sans effectuer toute action, les rapports console deux erreurs spécifiques: deny file-issue-extension et deny file-write-data. L'affiche app pour perdre des privilèges pour modifier le document depuis qu'il a été modifié par un éditeur externe après que le document a été ouvert dans mon application. Si je tente d'enregistrer le fichier dans mon application, il demande de dupliquer le document parce qu'il a accès perdu au document original. Cela ne se produit pas dans l'autre sens parce que ces applications ne sont pas sandbox et par conséquent disposer des autorisations que mon application ne fonctionne pas. Il ne semble pas que vous pouvez empêcher l'autre application de faire les changements si vous ne voulez pas ce comportement.

La documentation sur developer.apple.com mentionne rien de ce genre de situation. Je ne sais pas si cela est prévu le comportement. Dans ce cas, je peux dire à mon utilisateur que les autorisations de documents ont été perdus et ils devraient sauver soit une nouvelle version ou re-ouvrir le fichier. Si ce comportement n'est pas destiné, alors quelle méthode dans l'API NSDocument accorderait l'autorisation au fichier une fois qu'il a été perdu? Je suppose que la réponse est la première, que cela est prévu, mais quelqu'un peut-il confirmer et est-il des documents?

Était-ce utile?

La solution

Sans effectuer toute action, les rapports console deux erreurs spécifiques: deny fichier question extension et deny fichier-écriture des données. L'affiche app pour perdre des privilèges pour modifier le document depuis qu'il a été modifié par un éditeur externe après que le document a été ouvert dans mon application. Si je tente d'enregistrer le fichier dans mon application, il demande de dupliquer le document parce qu'il a accès perdu au document original

Le comportement correct dans une telle situation est de ne pas écraser le fichier, mais pour demander à l'utilisateur si elles veulent recharger le document, le cas échéant recharger puis écrire.

Le système d'exploitation est en train de faire la bonne chose en ne permettant pas une écriture aveugle sur un fichier qui a changé.

Voir NSFilePresenter - (void) presentedItemDidChange pour voir si elle a changé. Relisez le fichier, puis voir si vous pouvez l'enregistrer. Vous ne dites que vous avez été refusé une lecture sur le fichier.

En outre, puisque vous ne l'avez posté le code qu'il pourrait être utile de montrer ce code que vous utilisez pour accéder au fichier et de l'enregistrer. NSDocument a construit dans le traitement de certains types de modifications de fichiers dans le bac à sable.

Autres conseils

permet d'appeler votre App ScottEdit et votre concurrent StackEdit

Il pourrait y avoir plusieurs choses qui se passent. NSDocument a une méthode de lockDocument. StackEdit peut avoir verrouillé le document et n'a pas le déverrouiller après sauvegarde. Si vous quittez l'application, le fichier doit être déverrouillé et disponible pour votre application. Si tel est le cas, vous devrez créer une notification lorsque les attributs de fichier en utilisant le changement kqueue ou d'une autre.

Si l'autre application est l'accès « bloque » à votre application. Vous pouvez envoyer un courriel à ce développeur et lui demander de mettre à jour son application il débloque le document après sauvegarde. Cette dernière étape est en plus de la mise en place des notifications parce qu'un autre développeur peut venir et faire la même chose (casser votre application).

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