2009-08-16 16 views
0

私のアプリでいくつかのデフォルトデータを出荷したいと思います。このデータは、プロパティリストに完全に格納することができます。 strucureは単純です:プロパティリスト:簡単な交換可能なデフォルトデータをユーザーに提供する方法

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

私は考えた:私はプロパティリストではなく、どこかでそれをハードコーディングを使用する場合は、その後、私は簡単にアプリが既に配布された後から選択する多くのデフォルトを提供することができます。もし私がそれをハードコードすれば、毎回重いアップグレードを提供しなければならなくなり、アップルは合格するまでに数週間かかるだろう。

しかし、私が得ないものが1つあります。 Xcodeでそのプロパティリストを手動で作成し、リソースグループに配置します。私が知る限り、Xcodeはいくつかのバイナリ形式にコンパイルします。私のアプリでは、NSPropertyListSerializationを使ってNSDictionaryを作成します。しかし、このプロパティリストはサンドボックスのドキュメントディレクトリに配置されません。だから、アプリケーションがそのプロパティリストの更新をいつかダウンロードするならば、更新はドキュメントディレクトリに行かなければならないだろうが、アプリケーションはまだルートの古いplistを見るだろうか?どこに置く? sqliteデータベースと同じように、ドキュメントにコピーする必要がありますか?

もう1つ:plistを編集して、サーバーからダウンロード/更新用のXMLとしてすべてを提供すると、当然のことながら、いくつかのバイナリ形式にコンパイルされることはありません。それはどのように機能しますか? NSPropertyListSerializationはそれを読むのに問題がありますか? XCodeを使用して毎回そのことをコンパイルして、アプリにバイナリをダウンロードさせる必要がありますか?

答えて

1

一般的に使用されるプロパティリスト形式には、独自のバイナリ形式とxml形式(DTD)があります。どちらかを使用することができ、NSPropertyListSerializationは自動的に検出します。

XML形式はより冗長ですが、生成するのは簡単です。サーバーからデータを公開する場合は、xml plistを生成し、gzipなどで圧縮することを検討してください。

ここで、データの保存先についての最初の質問です。アプリケーションのペイロードを小さくするには、最初に更新されたplistのドキュメントディレクトリをチェックし、存在しない場合はアプリケーションバンドルからデフォルトのplistをロードします。

0

一般的には、plistsやその他の更新された要素をアプリケーションドキュメントディレクトリにコピーし、そこからロードするだけで、更新があったときに置き換えます。

または、データベースにデータをプリロードし、plistの更新をダウンロードして、その時点でデータベースエントリを更新することができます。

関連する問題