2014-02-16 7 views
0

Как добавить элемент для ключа «kArrayOfItemsInTheBox» в структуре, как показано ниже?Как добавить объект NSArray, который находится внутри свойства NSMutableDictionary и NSArray?

NSArray* arrayOfBoxes = @[ 
         [NSMutableDictionary dictionaryWithDictionary:@{ 
                     kArrayOfItemsInTheBox : [NSArray arrayWithObjects:@"1",@"2", nil], 
                     kBoxNumber : @"Box nr 1", 
                     } 
         ], 

         [NSMutableDictionary dictionaryWithDictionary:@{ 
                     kArrayOfItemsInTheBox : [NSArray arrayWithObjects:@"1",@"2", nil], 
                     kBoxNumber : @"Box nr 2", 
                     } 
         ] 
         ]; 
self.packageData = [NSMutableArray arrayWithArray:arrayOfBoxes]; 

Я знаю, как отображать элементы из массива, но у меня возникли проблемы с добавлением нового объекта в конец существующего списка. Мне нужно добавить это значение, используя свойство packageData. Окончательный результат после добавления новых значений должны выглядеть ниже структуры:

NSArray* arrayOfBoxes = @[ 
         [NSMutableDictionary dictionaryWithDictionary:@{ 
                     kArrayOfItemsInTheBox : [NSArray arrayWithObjects:@"1",@"2",@"Added Item", nil], 
                     kBoxNumber : @"Box nr 1", 
                     } 
         ], 

         [NSMutableDictionary dictionaryWithDictionary:@{ 
                     kArrayOfItemsInTheBox : [NSArray arrayWithObjects:@"1",@"2", nil], 
                     kBoxNumber : @"Box nr 2", 
                     } 
         ] 
         ]; 

Я пытаюсь что-то вроде:

[[self.packageData objectAtIndex:myIndex]addObject:@{kArrayOfItemsInTheBox:@"NewValue" }]; 

Если это невозможно сделать, может быть, у вас есть лучшее представление о том, как создать структуру с та же логика. Заранее спасибо

ответ

2

Самый простой способ с вашей текущей структуры

NSMutableDictionary *item = [self.packageData objectAtIndex:myIndex]; 
item[kArrayOfItemsInTheBox] = [item[kArrayOfItemsInTheBox] arrayByAddingObject:newObject]; 

Вообще, как только я должен использовать константы для ключей в словаре я считаю создание пользовательского объекта вместо

+0

Спасибо Павлу за вашу помощь, это работает отлично !!! – sonoDamiano

2

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

Затем вам необходимо перейти через вашу структуру данных. У вас есть массив словарей, содержащих и массив, и строку. Вам нужно копаться в этой структуре. Ваш текущий код копается во внешнем массиве, но затем пытается обработать словарь как массив.

Try (после внутренних массивов изменяемых):

[[[self.packageData objectAtIndex:myIndex] objectForKey:kArrayOfItemsInTheBox] addObject:@"NewValue"]; 

хотя лучше разбить эту строку на части так, что легче понять (и, следовательно, увидеть, где ошибка).

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