2014-02-16 102 views
0

如何在下面的結構中爲「kArrayOfItemsInTheBox」鍵添加項目?如何添加位於NSMutableDictionary和NSArray屬性內的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

然後,您需要瀏覽您的數據結構。你有一個包含數組和字符串的字典數組。你需要深入研究這個結構。您當前的代碼挖掘到外部數組,但隨後嘗試將字典視爲數組。

嘗試(後使得內部陣列可變):

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

雖然它是更好地打破了這一行分成幾部分,以便更容易理解(因此,看到那裏的錯誤)。