2

ユーザーがさまざまな色やブラシサイズで画面に描画できるアプリを作成しています。描画された各パスに関する情報は、メモリから保持するために描画された後、JSONファイルに保存しています。現在、既存のすべてのパスを解析してから、新しいパスを追加して、すべてを書き戻しています。新しいデータをJSONファイルに読み込んで最初に解析することなく、JSONファイルに追加するだけで、一度に1つのパスのみがメモリに存在するようになります。

私はSBJSONを使用しています。JSONWriterにはいくつかの追加機能がありますが、ファイルではなく、最初に追加するJSON文字列が必要だと思います。つまり、とにかくファイルを読み取る必要があります。ファイルをまったく読み込まずにこれを行う方法はありますか?私はデータがどのように構造化されているかを正確に知っています。

4

2 に答える 2

2

可能ですが、少しごまかす必要があります。パスごとにスタンドアロンのJSONドキュメントを作成し、それをファイルに追加するだけです。したがって、ファイルには次のようなものが含まれます。

{"name":"path1", "from": [0,3], "to":[3, 9]}
{"name":"path2", "from": [0,3], "to":[3, 9]}
{"name":"path3", "from": [0,3], "to":[3, 9]}

これは1つのJSONドキュメントではなく、3つのドキュメントであることに注意してください。ただし、便利なことに、一度にSBJsonStreamParser複数のJSONドキュメントを読み取ることができます。プロパティを設定してsupportMultipleDocumentsプラグインするSBJsonStreamParserAdapterと、すぐに使用できます。これには、ファイル全体を読み終える前に描画を開始できるため、ファイルに多数のパスがある場合にも利点があります。(パスごとにコールバックを取得するためです。)

ユースケースに関するいくつかの情報はここで見ることができます。

于 2012-12-13T21:55:12.050 に答える
0

私はそれが不可能だと確信しています...私がやったことは、JSONファイルを文字列として読み取ることでした。その後、メモリを浪費してすべてを辞書と配列に変更する代わりに、文字列の一部のインスタンスを探しました(例:文字列 "]、" texts ""が表示される前に何かを挿入したかったのですが、データを挿入してそこに挿入し、ファイルに書き戻しました。

私が知る限り、これが最善の解決策です。

于 2012-08-02T20:50:37.140 に答える