1

私はこれに対する答えをあちこちで検索しましたが、それは簡単だと確信しています。これを長い間見た後、隅に詰まっているだけかもしれません! 誰かが助けてくれることを願っています。Objective-C/iOS は初めてなので、申し訳ありません。

Web サービスから JSON 応答を取得し、すべてのキーと値を plist ファイルに保存できるようにしたいだけです。各オブジェクトとキーを指定する場合、これを行う方法は知っていますが、すべてのキーとオブジェクトを知る必要はなく、すべて保存したいだけです。JSONの結果が私に与えるものは何でも。

私の Web サービスからの JSON 応答の例:

{"result":[{"k_templateid":"2","tem_global":"1","tem_name":"iPad Template"}]}

すべてのオブジェクトとキーを指定した場合、アプリを毎回更新する必要なく、Web サイトに新しいデータベース フィールドと値を追加できるようにしたいと考えています。

キーとオブジェクトの指定に関して以前に行ったことの例:

NSMutableDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0];

NSMutableDictionary *things = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                         [res objectForKey:@"k_templateid"], @"k_templateid",
                                                         [res objectForKey:@"tem_global"], @"tem_global",
                                                         [res objectForKey:@"tem_name"], @"tem_name",
                                                         nil];
[things writeToFile:path atomically:YES];

これが理にかなっていることを願っています。これはすでに他の場所で回答されている可能性がありますが、検索で間違った用語を使用している可能性があります。ご協力いただきありがとうございます。

編集: JSON 部分が含まれていないことをお詫びします。また、Apple の JSON メソッドではなく、JSON に AFNetworking を使用しています。JSON は次のように呼び出されます。

[[API sharedInstance] commandWithParams:params
                           onCompletion:^(NSDictionary *json) {
4

3 に答える 3

2

メソッド JSONObjectWithData:options:error: を使用します。このサイトには、これに関する質問と回答がたくさんありますが、見つからなかったとは信じられません。

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

これにより、JSON データが NSDictionary (JSON が返す場合は配列) に変換されます。

于 2012-12-12T04:32:55.477 に答える
0

問題が見つかりました。私の JSON 応答には、もちろん plist ファイルに書き込めない NULL 値がいくつかあります。したがって、これらの NULL 値を Web サービス側で削除するか、Objective-C のコードを使用して取得します。ご協力いただきありがとうございます。

于 2012-12-13T00:24:36.337 に答える
0

あなたの説明から、私はあなたがやりたいと思う:

NSDictionary* result = [[json objectForKey:@"result"] objectAtIndex:0];

[result writeToFile:path atomically:YES];
于 2012-12-12T04:23:41.337 に答える