Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否将NSMutableDictionary与NSMutableDictionary一起添加到NSMutableArray?_Objective C_Arrays - Fatal编程技术网

Objective c 是否将NSMutableDictionary与NSMutableDictionary一起添加到NSMutableArray?

Objective c 是否将NSMutableDictionary与NSMutableDictionary一起添加到NSMutableArray?,objective-c,arrays,Objective C,Arrays,我的问题是试图弄清楚我将如何实施这个过程 我有一个问题列表,其中会有分配给它的策略,策略中会有工具 问题1 战略1 工具1 工具2 工具3 战略2 工具1 工具2 战略3 工具1 工具2 工具3 工具4 问题2 战略1 工具1 工具2 工具3 战略2 工具1 战略3 工具1 工具2 工具3 我想完全像上面的示例一样实现它,但使用NSMutableArray和NSMutableDictionary 您可以看到,每个问题都有一个策略,每个策略至少有一个工具,最多5

我的问题是试图弄清楚我将如何实施这个过程

我有一个问题列表,其中会有分配给它的策略,策略中会有工具

  • 问题1
    • 战略1
      • 工具1
      • 工具2
      • 工具3
    • 战略2
      • 工具1
      • 工具2
    • 战略3
      • 工具1
      • 工具2
      • 工具3
      • 工具4
  • 问题2
    • 战略1
      • 工具1
      • 工具2
      • 工具3
    • 战略2
      • 工具1
    • 战略3
      • 工具1
      • 工具2
      • 工具3
我想完全像上面的示例一样实现它,但使用NSMutableArray和NSMutableDictionary

您可以看到,每个问题都有一个策略,每个策略至少有一个工具,最多5个。同样,一个问题可以有无限的策略


非常感谢您的帮助!我在网上查过,似乎找不到任何关于这方面的可靠文章,所以我想为其他遇到类似这样复杂阵列的人提供一个可靠的答案。

好的,我想我明白你在这里想做什么了。所以基本上,你要在一系列问题的每个索引中,在一系列策略的每个索引中,放置一系列工具。比如:

  • 问题1
    • 战略1
      • 工具1
      • 工具2
    • 战略2
      • 工具1
  • 问题2
    • 战略1
      • 工具1
      • 工具2
    • 战略2
      • 工具1
代码应该是这样的:

NSMutableDictionary *toolDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"tool1 info",@"tool1 key", @"tool2 info", @"tool2 key", nil];
NSMutableDictionary *stratDict = [[NSMutableDictionary alloc] initWithObjects:[NSArray arrayWithObjects:toolDict,toolDict,toolDict, nil] forKeys:[NSArray arrayWithObjects:@"strat1 key",@"strat2 key",@"strat3 key", nil]];

//loop through # of questions and add strat dict to each
NSMutableArray *QuestionList = [[NSMutableArray alloc] init];
for (int i = 0; i < #ofQuestions; i++) {
    [QuestionList addObject:stratDict];
}
在JSON中:

[
  {"Question_id": "Question 1",
   "Strategies" : [
     {"Strategy_id" : "Strategy 1",
      "Tools" : [
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "sharp" },
        {"Tool_id" : "Tool 2",
         "Tool_attr" : "dull" },
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "green" }
        ]
      },
     {"Strategy_id" : "Strategy 2",
      "Tools" : [
        {"Tool_id" : "Tool 5",
         "Tool_attr" : "pointy" },
        {"Tool_id" : "Tool 6",
         "Tool_attr" : "blunt" },
        {"Tool_id" : "Tool 7",
         "Tool_attr" : "red" }
        ]
      }
    },
  {"Question_id": "Question 2",
   "Strategies" : [
     {"Strategy_id" : "Strategy 5",
      "Tools" : [
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "sharp" },
        {"Tool_id" : "Tool 2",
         "Tool_attr" : "dull" },
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "green" }
        ]
      },
     {"Strategy_id" : "Strategy 6",
      "Tools" : [
        {"Tool_id" : "Tool 5",
         "Tool_attr" : "pointy" },
        {"Tool_id" : "Tool 6",
         "Tool_attr" : "blunt" },
        {"Tool_id" : "Tool 7",
         "Tool_attr" : "red" }
        ]
      }
   ]

这将直接映射到NSDictionary/Array对象,其中
{}
是一个字典,
[]
是一个数组。

“…这将是NSMutable。”NSMutable什么?不要介意。。。我不知道你的问题是什么。“NSMutable”与“NS”相对,duh.NSMutable意味着数组中的对象将不是静态的,而是动态的,并且经常添加和删除。在本例中,代码部分向您展示了问题列表是NSMutableArray,其中的另外两个对象是NSMutableDictionary……我希望您能清楚这一点@tblue谢谢您的讲座。我碰巧在每个OSX应用程序中使用了NSMutableDictionary的NSMutableArray。如果你的问题很清楚,你可能不会得到2张反对票,其中没有一张是我的。(你找不到一个“公式”。这是编程。你必须根据你的要求设计它。忘记烹饪书。)我在那里得到了这个,但它显示为问题1>工具1,工具2。没有策略,这有点奇怪。你确定你准确地复制了代码吗?你能发布你到目前为止所做的吗?因为代码很长,而且很可能是反复联系,我们能在这里完成吗:谢谢@HotLicks,这真的帮了我的忙。你也证明了最好的一点,我进入这个行业是为了构建和实现我以前没有过的东西,我正在完全采用这种方法。没有烹饪书,只有一位厨师……谢谢@KeeanoMartin-解决问题的最大挑战往往是找出如何描述它。
[
  {"Question_id": "Question 1",
   "Strategies" : [
     {"Strategy_id" : "Strategy 1",
      "Tools" : [
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "sharp" },
        {"Tool_id" : "Tool 2",
         "Tool_attr" : "dull" },
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "green" }
        ]
      },
     {"Strategy_id" : "Strategy 2",
      "Tools" : [
        {"Tool_id" : "Tool 5",
         "Tool_attr" : "pointy" },
        {"Tool_id" : "Tool 6",
         "Tool_attr" : "blunt" },
        {"Tool_id" : "Tool 7",
         "Tool_attr" : "red" }
        ]
      }
    },
  {"Question_id": "Question 2",
   "Strategies" : [
     {"Strategy_id" : "Strategy 5",
      "Tools" : [
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "sharp" },
        {"Tool_id" : "Tool 2",
         "Tool_attr" : "dull" },
        {"Tool_id" : "Tool 1",
         "Tool_attr" : "green" }
        ]
      },
     {"Strategy_id" : "Strategy 6",
      "Tools" : [
        {"Tool_id" : "Tool 5",
         "Tool_attr" : "pointy" },
        {"Tool_id" : "Tool 6",
         "Tool_attr" : "blunt" },
        {"Tool_id" : "Tool 7",
         "Tool_attr" : "red" }
        ]
      }
   ]