2011-12-28 16 views
1

私はBeziarPathsでいっぱいのNSMutableArrayを持っています。私はPython上でアクセスできるようにシリアル化したいと思います。 GZIP + InkMLまたはGZIP + JSONを試すことができると私に提案しました。私はこれを行う最善の方法が何であるか疑問に思っていた。私はこれも本当に新しいので、サンプルコードは非常に役立つでしょう。Objective C to Python Serialization

ありがとうございました

+0

なぜSVGですか?それがちょうどベジエパスであれば、SVGも同様に優れていて、はるかにサポートされているでしょうか? –

+0

SVGは非常に興味深いようです。誰も私にそれを行う方法を示すサンプルコードに私を参照することはできますか? – user1120008

+0

2つ目の考えでは、両方に互換性のあるバイナリ形式があるのだろうかと思っていました。 – user1120008

答えて

0

あなたが最も好きなものを選択してください。どちらも標準ですが、JSONは辞書や配列をシリアライズするための一般的な形式ですが、InkMLは描画関連オブジェクトに重点を置いています。

JSONのサポートは、PythonとObjective-Cの両方で利用できますが、InkMLにはどちらの組み込みサポートもありません。

1

私は最近、この特定の領域で大きな効果を発揮するプロトコルバッファを使用しました。それは非常に少ないオーバーヘッドを持っていて、本来の目的であるCのシリアライゼーション/デシリアライゼーションよりパフォーマンスが優れています(私がサポートしたいデバイスの中で最も遅いデバイスなので、少なくとも私はパフォーマンスをテストしています)。

iOS開発で初心者に設定するのはしばらく時間がかかりました(ただし、Python側は本当に簡単でした)。

このブログの記事は本当に役立ちます:http://nserror.me/blog/2011/06/03/protocol-buffers-and-xcode/

を客観Cプロジェクトにプロトコルバッファを統合する方法に要約すると - 私は希望の誰かにそれを入れているので、これは、つなぎ合わせるために丸一日かかりました私の状況で重宝:here

  • のconfigure//は
  • (つまり、gitのクローンプロジェクトのgetをmake installを作るから

    • GETプロトコルバッファprotobuf-objc/src/runtimeには、xcodeプロジェクトがあります。
    • autogen.sh/configure/make/make install
    • には、xcodeプロジェクトがあります。それを開いて、ビルドしてからxcodeをもう一度閉じます。これは本当に重要です。
    • Xcodeでプロジェクトを開きます。ターゲットのビルドルールタブに移動します。 * .protoファイルのカスタムビルドルールを追加します。

    スクリプト:

    /usr/local/bin/protoc --plugin=/usr/local/bin/protoc-gen-objc \ 
    --proto_path=${INPUT_FILE_DIR} \ 
    --objc_out=${DERIVED_SOURCES_DIR} \ 
    ${INPUT_FILE_PATH} 
    

    出力ファイル:

    ${DERIVED_SOURCES_DIR}/${INPUT_FILE_BASE}.pb.h 
    ${DERIVED_SOURCES_DIR}/${INPUT_FILE_BASE}.pb.m 
    
    • あなたは
    • であなたの.xcodeprojを持っている同じディレクトリにいるProtobuf-にObjCプロジェクトをコピー追加protobuf-obj/src/runtimeのプロジェクトへの参照(ちょうどあなたのプロジェクトにファインダーからドラッグするだけです)
    • ターゲットの「ビルドフェーズ」では、プロトコルバッファーへの依存性を追加します
    • 「ビルド設定」で「すべて」ビューを選択し、ヘッダ検索パス$ /ランタイム/ビルド/製品
    • ターゲットのサマリーで、ProtocolBuffersプロジェクトによって生成された.aファイルへのリンクを追加します。
    • そしてそれは、今から、あなただけを追加します。protoファイルをプロジェクト(およびコンパイルするファイルのリスト)にコピーし、プロトコルバッファを使用することができます。