2015-03-09 5 views
0

У меня есть json из службы, и мне нужно изменить значения одного объекта obeject.xcode - заданное значение вложенного объекта

{ 
     question =  (
        { 
       answer =    (
            { 
         Id = 1; 
         value = 1; 
        }, 
            { 
         Id = 2; 
         value = 0; 
        } 
       ); 
      }, 
    ..... 

Я использую этот код для прямого доступа ко второму элементу «значение» и установить его на «истинный»

NSMutableDictionary * dict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]; 

    NSMutableDictionary *preguntasDict = [[NSMutableDictionary alloc] init]; 
    preguntasDict  =[[[dict valueForKey:@"question"]mutableCopy]; 
    NSMutableDictionary *answer = [[NSMutableDictionary alloc] init]; 
    respuestasDict  =[[[[preguntasDict valueForKey:@"answer"]objectAtIndex:0]objectAtIndex:1] mutableCopy]; 
    [respuestasDict setObject:[NSNumber numberWithBool:true] forKey:@"value"]; 

Он работает: «respuestasDict» меняется но whoole «ДИКТ» нет.

Мой вопрос: как можно перестроить весь словарь? или можно получить доступ непосредственно к вложенному объекту и изменить его?

ответ

0

Отметьте, что perguntasDict и respuestasDict являются изменяемыми копиями ваших словарей, поэтому в основном вы редактируете копии своего dict. Вы должны получить доступ к dict непосредственно, как это:

NSArray *answers = dict[@"question"][@"answer"]; 
[answers firstObject][@"value"] = @(YES); 

PS: Ведение Dict [@ "вопрос"] это то же самое, как [dict objectForKey:@"question"]. Кроме того, @(YES) - это то же самое, что и [NSNumber numberWithBool:true]

+0

Tx для ответа. Я попытался обратиться непосредственно к dict, но без изменчивой копии. (без чтения сообщения компилятора). – Dome

+0

@ doxsi попробуйте добавить контрольную точку исключения, чтобы увидеть, где она сбой - http://blog.manbolo.com/2012/01/23/xcode-tips-1-break-on-exceptions –

Смежные вопросы