2011-07-10 3 views
1

数ヶ月前、私はリンゴGLPaintに基づいてアプリを作った。 素晴らしいです。リンゴはGLPaintの例でどのようなデータを使用していますか?

私は、簡単な図を画面に描くポイントのセットを記録しました。ポイントの配列(NSValueに変換されたもの)として保存しました。

私は今、私のアプリケーションを改善しようとしています。私はリンゴの例をもう一度見ました。そのデータファイル内のデータ ようになります(私はそれを少し変更しました):

<data> 
AAC8QgAAsEMAAMJCAICoQwAAwkIBBAKRDAADCQgCAnUMAAMJCAACYQwAAwEIAgJRDAADA 
QgCAkkMAAMBCAACRQwAAwEIAgJBDAADAQgCAkEM= 
</data> 
<data> 
AACoQgAAnEMAALpCAACdQwAAxEIAAJ1DAAGGGgAAnUMAANpCAICdQwAA4kIAgJ5DAADs 
QgCAn0MAAOxCAICfQw== 
</data> 

だから、すべてのグループが1つの図である。これは、その後CGPointsの私のプレースメントリスト道コンパクトです。

私はCGPointの配列をデータに変換してファイルを読み返すことに成功しました。

しかし、私はこれを取得各形状データファイル(TextMateは、テキストエディット、Xcodeの上を...)開こうとするとは :

one of the CGPoints groups data file 私は理解したい:

  1. を何CGPointsリストのこの圧縮形式を取得するためにリンゴを使用しますか?
  2. データファイルをより読みやすい方法で開くにはどうすればよいですか?

答えて

3

sample applicationにあるAppleのRecording.dataファイルのデータは、それぞれがCGPoint構造体の配列を表すバイトを含むNSDataオブジェクトの束を含むNSArrayのXML Plist表現です。これは、CGFloatのバイナリ表現と、CGomp構造体の特定のレイアウトに依存することに注意してください。これは、コンパイラまたは同じコンパイラのバージョンによって異なる場合があります。

あなたのスクリーンショットはNSKeyedArchiverの出力であるように見えますが、これはより安全ですが、はるかにオーバーヘッドがあります。

あなたはコンパクトそれでもポータブル表現を望んでいた場合は、手動(this previous questionがあなたを助けるかもしれない)、その後、NSDataの中でバイト配列をラップへNSDatasを入れポータブル形式でバイト配列に個々CGFloatsをシリアル化可能性NSArrayを使用して、writeToFile:atomically:を使用して、Appleのようにplistに混乱を出力します。

1

これはBase64と思われる。 This pageはそれを言及:データバイトがベース64 <data></data>タグとの間で符号化される

留意されたいです。

<data>あなたが+[NSKeyedArchiver archivedDataWithRootObject:]を使用して配列から得ることができ、NSDataためのものです。

関連する問題