2009-08-16 5 views
0

Je souhaite envoyer des données par défaut avec mon application. Ces données peuvent être stockées parfaitement dans une liste de propriétés. La strucure est simple:Listes de propriétés: comment l'utiliser pour fournir des données par défaut facilement échangeables à l'utilisateur?

Root 
    0 
     animalType = cat 
     animalName = Tom 
    1 
     animalType = dog 
     animalName = Rambo 

Je pensais: Lorsque j'utilise une liste de propriétés plutôt que de coder en dur quelque part, alors je pourrais facilement fournir plus par défaut à choisir après l'application est distribuée déjà. Si je devais le coder en dur, je devrais fournir de lourdes mises à niveau à chaque fois, et Apple prendrait des semaines pour les laisser passer.

Mais il y a une chose que je ne comprends pas. Je fais cette liste de propriétés manuellement dans Xcode et la place dans mon groupe de ressources. Autant que je sache, Xcode le compilerait dans un format binaire. Dans mon application, j'utiliserais NSPropertyListSerialization pour en créer un NSDictionary. Mais cette liste de propriétés ne serait pas placée dans le répertoire de documents du bac à sable, n'est-ce pas? Donc, si l'application télécharge une mise à jour de cette liste de propriétés quelque temps dans le futur, la mise à jour devrait aller dans les documents dir, mais l'application regarderait toujours l'ancienne plist dans la racine, non? Où le mettre? Dois-je le copier dans des documents, tout comme une base de données sqlite?

Et l'autre chose: lorsque je modifie le plist et fournissez le tout comme XML pour le téléchargement/mise à jour d'un serveur, alors bien sûr cette chose ne serait pas "compilée" dans un format binaire. Comment cela fonctionnerait-il? Est-ce que NSPropertyListSerialization aurait du mal à le lire? Dois-je compiler cette chose à chaque fois avec XCode et laisser l'application télécharger des trucs binaires?

Répondre

1

Il existe deux formats de liste de propriétés couramment utilisés: le format binaire propriétaire et le format xml (DTD). Vous pouvez utiliser l'un d'entre eux, et NSPropertyListSerialization détectera automatiquement, lequel est utilisé pour vos données lors de la dé-sérialisation.

Le format XML est plus détaillé, mais il est simple à générer. Si vous publiez des données à partir du serveur, vous pouvez envisager de générer xml plist et le compresser avec gzip ou autre.

Maintenant à votre première question sur l'endroit où stocker les données. Pour réduire la charge utile de l'application, vous pouvez d'abord vérifier le répertoire des documents pour la mise à jour du plist et, s'il n'est pas présent, charger le plist par défaut à partir de votre ensemble d'applications.

0

Une approche générale consiste à toujours copier des plistes ou d'autres éléments mis à jour dans le répertoire des documents de l'application. Il suffit ensuite de les charger et de les remplacer lors d'une mise à jour. Vous pouvez également pré-charger les données dans une base de données, télécharger des mises à jour de plist et actualiser les entrées de base de données à ce moment là.