クラウドにバックアップできるように、iOS アプリのコア データベース全体を JSON にシリアル化する方法を考えています。ユーザーがJSON文字列を元に戻し、そこからコアデータベース全体を生成する方法を復元したい場合よりも?
出来ますか?何かアドバイス?
ありがとう
もちろん。JSON との間でオブジェクトをシリアライズ/デシリアライズし、JSONをアップロードまたはダウンロードするために簡単に使用できます。 NSJSONSerialization
NSURLRequest/Connection
AFNetworking
は、JSON シリアライゼーション/デシリアライゼーションが組み込まれている人気のあるネットワーク フレームワークです。私はまだ使用していないので、個人的に保証することはできませんが、非常に機能的に見えます。
NSManagedObject
(コア データベース オブジェクト) には関連付けられた があり、これには method があります。これにより、すべてのクラスと属性に対して明示的なコードを記述しなくても、シリアライゼーション/デシリアライゼーション メソッドを簡単に記述できます。 NSEntityDescription
- (NSDictionary *)attributesByName
Core Data は私のニーズのほとんどに対して重くて複雑であることがわかり、通常はプロトコルを使用してローカル ストレージとシリアライゼーション/デシリアライゼーションを書き込みます。将来のプロジェクトのために、それも検討するかもしれません。 NSCoding
NSJSONSerializationクラスリファレンスをご覧ください。JSONをCoreDataに配置することは間違いなく実行できますが、すべてのデータを適切な場所に配置するカスタム関数が必要です。JSONObjectWithData
JSONファイルを取得してNSDictionaryに配置します。
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://linktojson.com/file.json"]];
NSError *error = nil;
NSDictionary *results = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableLeaves
error:&error];
そこから、辞書のデータをCoreDataに入れることができます。
逆に言えば、それはおそらく実行可能であり、おそらく最終ステップになるでしょうが、そこに到達することは、おそらく上記で作成dataWithJSONObject
したNSDictionaryを再構築することに沿ったものになるでしょう。JSONObjectWithData