组合数组中的对象

时间:2010-10-11 20:54:52

标签: iphone objective-c cocoa cocoa-touch ipad

我有一个预先填充了字典的数组,每个字典由两个键组成。

{
   name = object1;
   quantity = 5;
},
{ 
   name = object2;
   quantity = 2;
}

我希望能够添加更多对象并组合任何重复的词典。因此,例如,如果我添加对象2的对象1和对象2中的3对,则结果就是这样。

 {
       name = object1;
       quantity = 10;
 },
 { 
       name = object2;
       quantity = 5;
 }

我的最终目标是能够在表格视图中显示项目旁边的数量。实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:3)

听起来像是想要NSCountedSet

答案 1 :(得分:1)

如果您真的想要遍历现有结构,那么您可以执行以下操作:

for (NSMutableDictionary *dict in ArrayName) {
    if([[dict valueForKey:@"name"] isEqual:someobject]) {
        int oldValue = [[dict valueForKey:@"quantity"] intValue];
        [dict setValue:[NSString stringWithFormat:@"%d",oldValue+1] forKey:@"quantity"];
    }
}

我假设您将数量存储为NSString,您可能使用了其他类似NSNumber的东西。

我认为更好的想法是使用两个属性(名称和数量)创建自己的类。然后保持这些对象的一个​​数组并迭代它。

答案 2 :(得分:0)

好吧,因为你的词典的键总是看起来一样,我想知道这不是一个不同的词典:

{ object1: 10, object2: 5}

假设您的对象名称是有效键,我会将它们用作键,然后在需要添加更多对象时根据需要递增计数器。

答案 3 :(得分:0)

我不清楚你在做什么,但是,

你可以用一个字典(没有一个数组)来解决这个问题,该字典将你的对象存储为密钥,并将它们的计数作为其值。

所以当你想要添加一个对象时,首先要检查你是否有这个对象     - 如果你没有它,你添加object1 = 1     - 如果你有,那么你增加该object1 = 2的值