0

Core Data を使用してローカルに保存する必要がある Web サービスから JSON を取得します。これは、一定の間隔の後に実行される同期操作の一部です。最初に JSON を NSManagedObject に変換し、既にローカルに保存されているかどうかを確認してから、既存のものを更新するか、新しい NSManagedObject を挿入する必要があります。

すでに保存されているかどうかに関係なく、チェックされている NSManagedObject。他の NSManagedObjects との関係を持つこともできます (これも述語の一部である必要があります)。

JSON <-> NSManagedObject から/へのこの逆シリアル化/シリアル化を処理するためのかなりのライブラリを誰でも提案できますか?

4

3 に答える 3

1

私はこの目的のためにRestKitを使用しています。非常に使いやすいです

于 2013-10-08T20:02:23.980 に答える
0

RestKit について: ここで説明されているように、Web サービス呼び出しを行うことを好みます: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

逆シリアル化の問題について: Web サービスによって取得された NSData オブジェクトを、次のような JSON 構造に変換することができます。


NSMutableDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers  error:nil];

次に、次のように NSManagedObject を設定するためにhttps://gist.github.com/pkclsoft/4958148を使用できます。


Entity *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:[self managedObjectContext]];
[entity populateFromDictionary:dict];

json 構造と NSManagedObject の構造が異なる場合は、NSManagedOject の設定に使用する前に NSMutableDictionary を操作できます。

于 2014-05-09T11:55:24.843 に答える
0

@オイゲン

RestKit は複雑に思えます。かなり複雑な JSON を解析し、Core データに保存する必要がありました。また、サーバー上のデータは変更される可能性があり、次の解析では、ローカルの Core データ値を新しく挿入するのではなく、更新する必要があります。

しかし、Web サービス呼び出しでは、HTTP ヘッダー user=access_token, password=mypassword を設定して認証する必要があります。

RestKit には、要求して managedObject に直接マッピングするメソッドが 1 つしかなく、そのメソッドだけが要求の送信中に正しく機能しません。403 応答が返ってきます。NSManagedObject に関連しない他のすべてのメソッドは、認証を行い、応答で適切な JSON を取得します。

RESTKIT を機能させるために多くの時間を無駄にしてきたので、簡単な方法を試す必要があると感じています。誰でも良いライブラリやその他の提案を提案できますか?

ありがとうございました。

于 2013-10-31T12:37:44.513 に答える