【问题标题】:insert an object to an NSMutablearray of NSDictionary将对象插入到 NSDictionary 的 NSMutablearray
【发布时间】:2011-08-04 19:43:06
【问题描述】:

我正在尝试将对象插入到 NSDictionary 数组中,但不知道如何操作。所有示例都显示了如何使用带有 insertObject:atIndex 的 NSDictionary 插入到数组中,但是这个示例不会在字典键下插入对象。

我现在的数组如下:

NSArray *aaa = [NSArray arrayWithObjects:@"Disable" ,nil];
NSDictionary *aaaDict = [NSDictionary dictionaryWithObject:aaa forKey:@"Computers"];
NSArray *bbb = [NSArray arrayWithObjects:@"Enable", nil];
NSDictionary *bbbDict = [NSDictionary dictionaryWithObject:bbb forKey:@"Computers"];
NSArray *ccc = [NSArray arrayWithObjects:@"Enable", nil];
NSDictionary *cccDict = [NSDictionary dictionaryWithObject:ccc forKey:@"Computers"];

[listOfItems addObject:aaaDict];
[listOfItems addObject:bbbDict];
[listOfItems addObject:cccDict];

我想这样做,但要使用“计算机”键:

   NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil];
    NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"];
    [listOfItems insertObject:ar atIndex:1];

再次 - 它确实添加了新数组,但不在“计算机”键下。我在这里错过了什么?

谢谢!

【问题讨论】:

  • 什么意思?什么不工作? listOfItems,大概是NSArray,没有任何键的概念(它不是字典)。

标签: iphone objective-c xcode uitableview nsarray


【解决方案1】:

你可能想写
[listOfItems insertObject:arDict atIndex:1];
而不是
[listOfItems insertObject:ar atIndex:1];

您添加的是数组,而不是问题第一部分中的字典。

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解您要执行的操作,但您是要插入 ar 对象还是 arDict 对象?我认为你的代码应该是这样的

    NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil];
    NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"];
    [listOfItems insertObject:arDict atIndex:1];
    

    【讨论】:

      【解决方案3】:

      您的意思是要在 listOfItems 数组中的字典中添加另一个数组吗?如果是这种情况,则需要这样的嵌套方法调用:

      [[listOfItems objectAtIndex:0] setObject:ar forKey:@"Computers"];
      

      【讨论】:

        【解决方案4】:

        当它添加新对象时,您必须首先获取 NSDictionary。所以基本上你用错了字典。你所做的就相当于

        [listOfItems addObject:aaa]; 和 bbb、ccc 和 ar 类似

        您真正想要做的是将对象添加到字典而不是数组。

        NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
        [dictionary addObject:[NSArray arrayWithObjects:@"Disable" ,nil] forKey:@"Key1"]; // your keys need to be unique
        [dictionary addObject:[NSArray arrayWithObjects:@"Enable", nil] forKey:@"Key2"];
        [dictionary addObject:[NSArray arrayWithObjects:@"Enable", nil] forKey:@"Key3"];
        
        [dictionary addObject:[NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil] forKey:@"Key4"];
        

        【讨论】:

          【解决方案5】:

          修复了泄漏问题

          NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil];
          NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"];
          [listOfItems insertObject:arDict atIndex:1];
          [ar release]; // fixed the leak
          [arDict release];  // fixed the leak
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-19
            相关资源
            最近更新 更多