繁体   English   中英

如何添加位于NSMutableDictionary和NSArray属性内的NSArray对象?

[英]How to add NSArray object which is located inside NSMutableDictionary and NSArray property?

如何在以下结构中为“ kArrayOfItemsInTheBox”键添加项?

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" }];

如果不可能做的话,也许您有更好的主意如何使用相同的逻辑创建结构。 提前致谢

首先,要添加到的数组是不可变的,因此您需要更改为使用NSMutableArray

然后,您需要浏览数据结构。 您有一个包含和以及一个字符串的字典数组。 您需要深入研究此结构。 您当前的代码深入到外部数组,但随后尝试将字典视为数组。

尝试(使内部数组可变之后):

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

尽管最好将此行分成几部分,以便更容易理解(并因此查看错误在哪里)。

当前结构最简单的方法是

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

通常,一旦我必须对字典中的键使用常量,我就会考虑创建一个自定义对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM