3

一部のデータをコア データから JSON にエクスポートしようとしています。レコード数はそれほど大きくありませんが (約 5000 ~ 15000 レコード)、私のデータ モデルは複雑で、各レコードに大量のデータがあるため、これをエクスポートすると許容メモリを超え、iOS がアプリを強制終了します。

私が現在行っている手順は次のとおりです。

    1. codeta からすべてのデータを抽出し、それを「NSDictionary」に格納するメソッドがあります
    2.次に、「NSOutputStream」と「NSJSONSerialization」を使用してファイルに書き込みます
    3. 次に、ファイルを圧縮してメールで送信します

データをストリーミングするときの最大メモリの観点から、ステップ 2 と 3 は問題ないと確信しています。しかし、問題は、すべてのデータを効果的に CD から取り出してメモリに入れているため、ステップ 1 で強制終了されることNSOutputStreamですNSJSONSerialization

すべてをメモリに取り込む必要がなく、単一のツリー JSON ファイルに書き込む方法を知っている人はいますか?

更新 - 詳細
私のデータ構造 (明確にするために簡略化) は次のようになります。レコードのフラットなセットだけでなく、リレーションシップを持つオブジェクトの階層構造を考えると、コアデータからデータをバッチで引き出し、json を構築するためにすべてをメモリ内ではなく json ストリーマーに供給する方法を理解できません。上記のステップ 1 は、実際にはコア データ エンティティからデータを引き出して「NSDictionary」を構築する再帰メソッドのコレクションです。

Folder {
    Folder {
        Word {
            details type 1
            details type 2
        }
        Word {
            details type 1
            details type 2
        }
    }
    Folder {
        Word {
            details type 1
            details type 2
        }
        Word {
            details type 1
            details type 2
        }
    }
    Word {
        details type 1
        details type 2
    }
}
4

3 に答える 3

0

問題は、プロジェクトスキーマでゾンビオブジェクトを有効にしたことでした。何らかの理由で、これもリリースビルドに引き継がれました。

それをオフにすると、すべての問題が修正されました。

クールなデザインパターンなので、TheBasicMindsデザインパターンも使用することになりました...

于 2014-01-04T13:22:27.320 に答える