【问题标题】:Changing the structure of an NSDictionary更改 NSDictionary 的结构
【发布时间】:2015-09-07 05:10:04
【问题描述】:

我有一个包含这样的字典的数组:

这是我的代码:其中键是 objs 是“ABC”、“SKY”,键是“T-4112-561-560.ts”、“T-4112-561-561.ts”

 array = [NSMutableArray array];

        [array addObjectsFromArray: keys];
        [array addObjectsFromArray: objs];

 NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjects: keys forKeys: objs];

[myArray addObject:[dict copy]];

这是我的输出:

2015-09-07 10:25:21.329 XBMC Remote[1082:454537] myArray:
(
        {
        ABC = "T-4112-561-560.ts";
    },
        {
        SKY = "T-4112-561-561.ts";
    }
)

我需要得到这样的输出:

(
        {
        Name=ABC; 
        value= "T-4112-561-560.ts";
    },
        {
        Name=SKY;
        value = "T-4112-561-561.ts";
    }
)

【问题讨论】:

  • “天空”从何而来?
  • 确实;这种转化的关键是什么?
  • @Paulw11 :那些“天空”和“ABC”是频道的名称。我已将这些字典放入数组中。我需要什么,我想将那些具有某些特定名称的字典值指定为“名称”和“值”
  • 我问是因为您的第一个数据块中没有“天空”。第二个“ABC”真的应该是“Sky”吗?您需要澄清问题中的数据映射方式。答案可能是您需要遍历数组并构建目标字典,但您没有提供足够的信息。您还应该尝试并展示您的代码,说明您在哪里遇到特定问题
  • @Paulw11 :我已经详细编辑了这个问题。是的,你是对的。这是我的第一个问题,我完全受够了这个。请帮我解决这个问题

标签: ios objective-c nsarray nsmutabledictionary


【解决方案1】:

有很多方法可以实现这一点,但基本上所有方法都将归结为循环遍历数组,提取字典值。您可以使用许多方便的方法,例如enumerateObjectsUsingBlock,但为了保持简单,以下代码使用简单的for 枚举循环-

NSMutableArray *outputArray=[NSMutableArray new];


for (NSDictionary *dict in myArray) {
    NSMutableDictionary *outputDictionary=[NSMutableDictionary new];
    for (NSString *key in dict.allKeys) {
        NSString *value=dict[key];
        outputDictionary[@"name"]=key;
        outputDictionary[@"value"]=value;
    }
    [outputArray addObject:outputDictionary];
}

【讨论】:

  • 您的代码检索输出如下: name = "T-4112-561-560.ts";但我需要的是:name = "ABC"; value="T-4112-561-560.ts"
  • 糟糕。对不起。修复了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多