Je travaille sur un programme C++ dans Xcode, qui ouvre des fichiers dans le dossier du projet, qui se trouve dans le dossier de l'utilisateur. ~/Documents/Xcode Projects
. Comme il se trouve dans mon dossier Documents, chaque fois que je lance le programme, il me demande les autorisations d'accès à mon dossier Documents, et je dois cliquer sur "oui" à chaque fois. J'ai essayé de donner explicitement l'autorisation au programme dans les paramètres, et cela fonctionne un peu, mais après environ 3 exécutions du programme, il demande à nouveau les autorisations. Puis-je simplement désactiver la protection du dossier de documents ? Comment ?
Réponse
Trop de publicités?Le moyen le plus simple est de désactiver le sandboxing pour l'application, dans les paramètres du projet Xcode sous "capabilities". Mais vous n'en aurez peut-être pas besoin.
Sinon, vous avez probablement besoin d'un signet de sécurité pour le répertoire. Lorsque vous obtenez l'accès, créez un signet à partir de l'URL du répertoire à l'aide de la commande bookmarkData(options:includingResourceValuesForKeys:relativeTo:)
. Veillez à utiliser .withSecurityScope
dans le options
argument. Enregistrez cela dans les paramètres par défaut de l'utilisateur. Ensuite, quand vous voulez utiliser le répertoire,
- Lire le signet à partir des valeurs par défaut de l'utilisateur
- Initialiser l'URL en utilisant
init(resolvingBookmarkData:options:relativeTo:bookmarkDataIsStale:)
avec des options de[.withSecurityScope, .withoutUI]
. - Appelez
.startAccessingSecurityScopedResource()
avant d'essayer d'utiliser l'URL. - Appelez
.stopAccessingSecurityScopedResource()
lorsque vous avez terminé avec l'URL.