J'ai une plist qui est binaire plist.Comment lire un plist?
Ai-je besoin de le convertir avant de pouvoir l'utiliser? ou est-ce que mon application peut lire le plist?
J'ai une plist qui est binaire plist.Comment lire un plist?
Ai-je besoin de le convertir avant de pouvoir l'utiliser? ou est-ce que mon application peut lire le plist?
Utilisez +[NSDictionary dictionaryWithContentsOfURL:]
. Il peut comprendre les plistes binaires.
Edit:
Comme Peter Hosey souligne, cela ne fonctionnera que si l'élément racine est un dictionnaire. Si l'élément racine est un tableau, vous pouvez utiliser +[NSArray arrayWithContentsOfURL:]
.
Une solution beaucoup plus générale consiste à utiliser NSPropertyListSerialization, comme suggéré par Vladimir dans sa réponse qu'il a supprimé. Il sérialise à la fois (fait des données de plist d'un objet) et désérialise (recrée un arbre d'objet à partir des données de plist).
Il est toujours capable d'analyser toute plist valide, binaire ou autre, quel que soit le type de l'élément racine; Vous pouvez ensuite inspecter l'objet retourné pour vous assurer qu'il est du type attendu.
WHats la différence entre votre solution et + [NSDictionary dictionaryWithContentsOfURL:] –
Défenseur du code: Comme je l'ai mentionné dans mon commentaire sur la réponse de mipadi, 'dictionaryWithContentsOfURL:' ne retournera qu'un dictionnaire; passez-lui un fichier plist contenant un autre type d'objet à sa racine, et il renverra 'nil'. NSPropertyListSerialization renverra tout ce qui se trouve dans le fichier. Cela vous permet de prendre en charge différents types, tels qu'un dictionnaire unique ou un tableau de dictionnaires. –
Merci, je vais regarder dans tout de suite! –
Cela ne fonctionnera que pour les fichiers plist dont l'élément racine est un dictionnaire. –
Mon élément racine est un dictionnaire. –