TouchJSON возвращает изменяемые объекты? - PullRequest
4 голосов
/ 09 марта 2011

Я получаю JSON от веб-службы.Я анализирую это с помощью библиотеки TouchJSON.Я сохраняю данные, чтобы пользователь мог изменить определенные значения, а затем хочу вернуть их в веб-службу.

Получаемый мной объект JSON содержит NSDictionary Objects внутри объекта, например:

[
    {
        "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 и скопировать все данные в изменяемую копию, а затем заново вставить все?

Надеюсь, кто-то может помочь мне в этом:) заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

TouchJson имеет возможность вернуть изменяемый объект, а не обычный. (Я нашел его, посмотрев на исходный код.) По умолчанию возвращается его «копия», а не «mutablecopy».

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]];
0 голосов
/ 09 марта 2011

Вы можете создать изменяемый словарь из словаря, подобного этому.

(при условии, что ваш проанализированный словарь json был назван jsonDictionary)

NSMutableDictionary *userDictionary = [NSMutableDictionary dictionaryWithDictionary:jsonDictionary];

Надеюсь, что это решит за вас.

...