106 votes

Échec de lecture des valeurs dans CFPrefsPlistSource iOS 10

J'ai mis à jour mon Xcode 8 bêta 2 aujourd'hui et j'essaie de partager des données entre l'Application et aujourd'Hui de l'Extension. Je suis face à ce journal d'avertissement:

2016-07-08 18:00:24.732472 ProjetctX[941:42801] [Réglages Par Défaut] N'A Pas pour lire des valeurs dans CFPrefsPlistSource<0x1700f1280> (Domaine: groupe.x.p.t.o, Utilisateur: kCFPreferencesAnyUser, ByHost: Oui, Contenant: (null)): à l'Aide de kCFPreferencesAnyUser avec un conteneur est uniquement autorisé pour le Système de Conteneurs, de se détacher de cfprefsd

Quelqu'un peut m'aider?

99voto

waltflanagan Points 813

C'est en fait une fausse alerte qui a été introduit dans l'iOS 10 et macOS 10.12. (Source: https://twitter.com/Catfish_Man/status/784460565972332544)

Les conseils de l'ajouter au début de votre équipe ID silence de l'avertissement, mais aussi de créer un nouvel utilisateur vide par défaut. Cela se traduira dans toutes les données précédemment stockées illisibles.

Pour le moment, la solution est simplement de l'ignorer.

Aussi, Apple membre du personnel de CFM sur les forums:

Connecté message est fausse, sauf si vous êtes en train de faire très spécifique de choses que je ne pense pas que sont possible sans l'aide des fonctions privées (il a été ajouté à attraper une mauvaise utilisation de ces fonctions, mais aussi, malheureusement, pris d'une utilisation normale de cas).

20voto

Arfan Mirza Points 173

Voici comment utiliser NSUserDefaults avec l'App Groupes pour transmettre les données entre votre application et de votre poste:

  1. Dans votre application, sélectionnez votre projet dans l'explorateur de Projets.

  2. Sélectionnez votre application principale cible et choisissez l'onglet Fonctionnalités.

  3. Basculer l'App Groupes interrupteur SUR on. Cela permettra de communiquer avec le Le Portail des développeurs afin de générer un ensemble de droits.

  4. Créer un nouveau conteneur. Selon Apple, votre ID de conteneur doit commencez par "groupe", donc un nom tel que "le groupe.io.intrépide.myapp" est parfait.

  5. Sélectionnez votre objectif d'extension et répétez le processus d'activation de l'App Groupes de. Ne pas créer une nouvelle Application du Groupe, il suffit de sélectionner le groupe que a été créé dans l'application principale cible.

  6. Lors de la lecture ou de l'écriture NSUserDefaults dans votre application ou de votre extension, de ne pas accéder à NSUserDefaults.standardUserDefaults(). Au lieu d'utiliser NSUserDefaults(suiteName: "le groupe.io.intrépide.myapp"). Remarque: le nom de La suite est le nom de votre Application conteneur de Groupe créé dans l'Étape 4.

Assurez-vous, du groupe permettre à et en utilisant le même id de groupe pour à la fois l'extension et l'application de la capacité de la section!

Le crédit va à http://blog.intrepid.io/ios-app-extensions

6voto

Patrick Pan Points 23

Également eu le même problème avec mon application MacOS.

Résolu par: Redémarrez l'appareil!

https://stackoverflow.com/a/39876271

5voto

Emmanuel Sellier Points 131

SuiteName (postfix) ne doit pas être l'ID principal de l'ensemble.

1voto

Shaggy D Points 2678

Je suis confronté au même problème lorsque j'essaie d'utiliser initWithSuiteName. On dirait que c'est un bug d'Apple. La seule solution / solution que j'ai trouvée consiste à réinitialiser tous les paramètres du périphérique. Allez dans Paramètres -> Général -> Réinitialiser -> Réinitialiser tous les paramètres.

Cela n'efface aucun contenu sur l'iPhone, mais efface tous les paramètres. Après avoir réinitialisé le réglage, tout a bien fonctionné. Faites-moi savoir si cela vous aide aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X