【问题标题】:How to addObject of NSMutableDictionary to NSMutableArray in a loop如何在循环中将 NSMutableDictionary 的对象添加到 NSMutableArray
【发布时间】:2009-12-24 11:02:19
【问题描述】:

我很难将数据结构添加到数组以从循环中创建字典数组。我只知道 NSMutableArray 中的 addObject 只添加指向它的指针。我想知道如何实现我的目标。

这是我的代码:

NSMutableDictionary *woRows = [[NSMutableDictionary alloc] init];
NSMutableArray *workOrders = [[NSMutableArray alloc] init];
while ([theScanner isAtEnd] == NO)
{
    if ([theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol1] &&
        [theScanner scanString:@"{US}" intoString:NULL] &&
        [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol2] &&
        [theScanner scanString:@"{US}" intoString:NULL] &&
        [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol3]&&
        [theScanner scanString:@"{RS}" intoString:NULL])
    {
        [woRows  setValue:tempCol1 forKey:@"hours"];
        [woRows setValue:tempCol2 forKey:@"colMain"];
        [woRows setValue:tempCol3 forKey:@"colAddtl"];

        [workOrders addObject:woRows];
        [woRows release];
    }
}
[tmpString release];
[jobs addObject:workOrders];
[workOrders release];

从上面的代码中,数组 workOrders 将只添加最后一个对象的副本。我卡在这里无法继续显示正确​​的数据。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: iphone nsmutablearray nsmutabledictionary


    【解决方案1】:

    试试[workOrders addObject:[woRows copy]];

    【讨论】:

    • 它奏效了,我喜欢你的方法并在我的代码中使用。知道为什么我不能投票给你的答案吗?它一直变回零
    【解决方案2】:

    我知道,这有点晚了,甚至不是你想要的,但我猜你想使用 [woRows setObject:forKey:] 而不是 [woRows setValue:forKey:]

    【讨论】:

      【解决方案3】:

      将您的字典创建代码移动到循环内(在 if 条件内)

      woRows = [[NSMutableDictionary alloc] init];
      

      您正在使用相同的对象...

      【讨论】:

      • 谢谢,它成功了。知道为什么我不能投票给你的答案吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2014-05-25
      相关资源
      最近更新 更多