containerURLForSecurityApplicationgroupidentifier obtenir une valeur nulle
je fais deux iPad app qui communiquent avec un fichier et récupère toutes les données d'un fichier. Je cherche et trouve ce "containerURLForSecurityApplicationgroupidentifier" nous pouvons créer le groupe et stocker dans cela. J'ai écris le code ci-dessous. Dans le dossier d'admissibilité, j'écris
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>$(TeamIdentifierPrefix)com.xxx.catalogapp.Coredata</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.xxx.catalogapp.Coredata</string>
</array>
</dict>
</plist>
et en Code j'écris ceci
NSFileManager* fileManager = [NSFileManager defaultManager];
NSURL* storeUrl = [fileManager
containerURLForSecurityApplicationGroupIdentifier:@"com.xxx.catalogapp.Coredata"];
NSLog(@"%@", storeUrl);
mais stockeurl je reçois nil
valeur.
4 réponses
Xcode6 (actuellement en beta) renforce les ID de Dossier Partagés pour commencer avec "group."
partager mon magasin CoreData fonctionne pour moi avec L'URL suivante avec Xcode6/iOS8 les deux bêta.
NSFileManager* fileManager = [NSFileManager defaultManager];
NSURL* storeUrl = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.XXX"];
il semble que la documentation liée à stevesliva sera obsolète dès que Xcode6 sera disponible
Eh bien, je l'ai vérifié dans mon propre code. L'identifiant de L'équipe apparaît dans le sous-répertoire de la bibliothèque/des conteneurs de groupe, vous devez donc en fait l'inclure dans votre code:
NSFileManager* fileManager = [NSFileManager defaultManager];
NSURL* storeUrl = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"YOURTEAMID.com.xxxxxxxxxxx.catalogapp.Coredata"];
NSLog(@"%@", storeUrl);
ce dont je ne suis pas sûr, c'est de savoir si C'est un nom requis-- ce n'est pas très convivial-- ou si C'est quelque chose Qu'Apple recommande pour le rendre super-unique.
comme mentionné dans le commentaire ci-dessus, cela a été compris à partir de Apple Guide De Conception Du Bac À Sable-Groupe D'Application Répertoire Des Conteneurs:
Ces conteneurs sont automatiquement ajoutés dans chaque application sandbox du conteneur tel que déterminé par l'existence de ces clés, et sont stockés dans ~/Bibliothèque/Conteneurs/, où est le nom du groupe. Le nom du groupe lui-même doit commencer par votre ID d'équipe de développement, suivi d'une période.
dans iOS 11, Il y a une meilleure façon d'obtenir L'URL du conteneur partagé.
[NSFileProviderManager defaultManager].documentStorageURL
assurez-vous de signer à la fois votre application et votre extension avec le même profil d'approvisionnement!