4

Web サービスから json を受信して​​います。TouchJSON ライブラリを使用してこれを解析します。ユーザーが特定の値を変更できるようにデータを保持し、それを Web サービスに返したいと考えています。

取得した JSON オブジェクトには、次のように、オブジェクト内に NSDictionary オブジェクトが含まれています。

[
    {
        "id": null,
        "created_at": 12332343,
        "object": {
            "name": "Some name",
            "age" : 30 
        },
        "scope": "it stuff",
        "kind_id": 1,
        "valid": true,
        "refering_statement": {
            "id": 95 
        },
        "user": {
            "id": 1 
        } 
    }
]

このディクショナリの値を変更したい場合、TouchJSON から返されるオブジェクトは変更できないため、変更できません。

TouchJSON に変更可能なオブジェクトを返す方法はありますか?

または、Objective C で NSDictionary とそのすべての子を変更可能にする方法はありますか?

または、NSDictionary 内のすべての NSDictionary を調べて、すべてのデータを変更可能なコピーにコピーしてから、すべてを再挿入する必要がありますか?

誰かがこれについて私を助けてくれることを願っています:)事前に感謝します。

4

2 に答える 2

2

TouchJson には、通常ではなく変更可能なオブジェクトを返すオプションがあります。(ソースコードを見て見つけました。)デフォルトでは、「mutablecopy」ではなく「copy」を返します。

NSError *error = nil;    
jsonString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
CJSONDeserializer *jsondeserializer = [CJSONDeserializer deserializer];
jsondeserializer.scanner.options = kJSONScannerOptions_MutableContainers;
NSMutableDictionary *jsonitems = [[NSMutableDictionary alloc] initWithDictionary:[jsondeserializer deserializeAsDictionary:jsonData error:&error]];
于 2011-09-08T14:34:26.100 に答える
0

このような辞書から変更可能な辞書を作成できます。

(json 解析済み辞書の名前が jsonDictionary であると仮定します)

NSMutableDictionary *userDictionary = [NSMutableDictionary dictionaryWithDictionary:jsonDictionary];

それがあなたのためにそれを解決することを願っています。

于 2011-03-09T17:17:22.543 に答える