一部のデータをコア データから 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
}
}